IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Bash - Nombre de liens physiques


Sujet :

Linux

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut Bash - Nombre de liens physiques
    Bonjour

    J'aimerai savoir comment savoir repérer le nombre de liens physiques d'un fichier.
    Je ne vois que la fonction ls -l qui donne cette information perdu au milieu de plein de choses Je repère déjà les liens symboliques.
    C'est par sécurité pour éviter un rm -f désastreux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/bin/bash
     
    cd /maison/mc/public_html/diaporama
    if [ "$PWD" = "/maison/mc/public_html/diaporama" ]; then
     for file in *
      do
       if [ -L "$file" ]
       then
         rm -f "$file"
       fi
      done
     ln ../impression/* .
     ln ../joli/* .
     ln ../deja_imprime/* .
    else
     echo "Mauvais répertoire"
    fi
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    CHEMIN=/maison/mc/public_html/diaporama
    find $CHEMIN -type f -links +1

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Pas mal !
    Merci !

    Mais je pense que ceci vient de m'ouvrir des portes grace à man find !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/bash
     
    cd /maison/mc/public_html/diaporama
    if [ "$PWD" = "/maison/mc/public_html/diaporama" ]; then
     find . -type f -links +1 | xargs rm -f
     find . -type l  | xargs rm -f
     ln ../impression/* .
     ln ../joli/* .
     ln ../deja_imprime/* .
    else
     echo "Mauvais répertoire"
    fi
    J'ai bien compris ? Ça simplifie en plus le long code pour repérer les liens symboliques !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    je te propose encore plus court :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    REP=/maison/mc/public_html/diaporama 
     
    for file in $( find $REP -type f )
     
     do
       if [ -L $file ] || [ $( stat -c '%h' $file )  -gt 1 ]
         then echo rm $file 
         else echo pas supprimer $file
       fi
     done
    l'embetant avec find . -type f -links +1 | xargs rm -f c'est qu'il supprimera tous les fichiers.

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Citation Envoyé par becket
    je te propose encore plus court :
    D'un point de vu lignes, c'est quif-quif bouricot ! Par contre, je ne comprends pas ton pas supprimer $file. Il s'affiche quand le fichier n'est pas à supprimer à mon avis. Et pourquoi mets-tu un echo devant le rm ? (je n'ai pa testé ton programme, mais j'essaie de le comprendre).
    Citation Envoyé par becket
    l'embêtant avec find . -type f -links +1 | xargs rm -f c'est qu'il supprimera tous les fichiers.
    Uniquement les fichiers dont le nombre de liens physiques est suppérieur à 1, pas les autres. J'ai fait le test. A moins que tu pensais à autre chose.
    Par contre, je met de côté ton code avec stat car je trouve la fonction pas mal du tout !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  6. #6
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par troumad
    Citation Envoyé par becket
    l'embêtant avec find . -type f -links +1 | xargs rm -f c'est qu'il supprimera tous les fichiers.
    Je prend un exemple si dans ton répertoire tu as un fichier et des liens physiques :

    fichier lien_1 lien_2 lien_3 ...


    find . -type f -links +1 va sortir tous les fichiers fichier lien_1 lien_2 lien_3. Cette liste va etre envoyé vers rm via le pipe et effacer tous les fichiers !
    Je ne pense pas que ce soit ce que tu veux faire

    Tandis que l'autre méthode va préserver un fichier

    La raison de l'echo est uniquement lié au fait que c'est un script de test

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Je ne suis pas d'acord :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [troumad@pc-bernard][~/test]$ ll
    total 36
    -rw-rw-r--  1 troumad troumad     3 2005-03-07 20:25 i
    -rw-r--r--  2 troumad troumad 31447 2004-10-10 16:40 Limite_et_Continuite_etudiants.sxw
    lrwxrwxrwx  1 troumad troumad    23 2005-03-07 20:24 limite.sxw -> ../Cours_IUT/limite.sxw
    [troumad@pc-bernard][~/test]$  find . -type f -links +1
    ./Limite_et_Continuite_etudiants.sxw
    [troumad@pc-bernard][~/test]$
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  8. #8
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    je précise .. je m'excuse si je n'ai pas été clair

    "un fichier et les liens physique du fichier dans le meme répertoire"

  9. #9
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    C'est plutôt que tu as pensé à plus de choses que moi !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    troumad@pc-bernard][~/test]$ ln i a
    troumad@pc-bernard][~/test]$ ll
    total 40
    -rw-rw-r--  2 troumad troumad     3 2005-03-07 20:25 a
    -rw-rw-r--  2 troumad troumad     3 2005-03-07 20:25 i
    -rw-rw-r--  2 troumad troumad 31447 2004-10-10 16:40 Limite_et_Continuite_etudiants.sxw
    lrwxrwxrwx  1 troumad troumad    23 2005-03-07 20:24 limite.sxw -> ../Cours_IUT/limite.sxw
    [troumad@pc-bernard][~/test]$  find . -type f -links +1
    ./Limite_et_Continuite_etudiants.sxw
    ./a
    ./i
    [troumad@pc-bernard][~/test]$
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Limitation du nombre de liens ODBC
    Par steph3326 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 30/04/2008, 16h51
  2. Déterminer le nombre de cpu physique
    Par secretman dans le forum Delphi
    Réponses: 4
    Dernier message: 09/06/2007, 16h48
  3. [REDHAT] Connaitre le nombre de disques physiques
    Par linar009 dans le forum RedHat / CentOS / Fedora
    Réponses: 4
    Dernier message: 23/03/2007, 08h13
  4. Réponses: 17
    Dernier message: 07/07/2006, 11h50
  5. [ Tomcat ] Couper tout lien physique entre BD et la Servlet.
    Par spk4ever dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 18/01/2006, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo