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

AIX Discussion :

Commande FIND avec exclusion


Sujet :

AIX

  1. #1
    Membre à l'essai
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 17
    Points
    17
    Par défaut Commande FIND avec exclusion
    Objet : Suppression de tous les répertoires et fichiers d'un répertoire, avec exclusion d'un répertoire .
    Exemple :
    /home/test
    /home/test/Fic1.txt
    /home/test/Rep1__AA.txt
    /home/test/Rep2__AA.txt
    /home/test/Rep1
    /home/test/Rep1/Fic1.txt
    /home/test/Rep1/Fic2.txt
    /home/test/Rep2
    /home/test/Rep2/Fic1.txt
    /home/test/Rep2/Fic2.txt

    je veux supprimer tous les fichiers et répertoires de /home/test sauf le répertoire Rep2 et ses fichiers.
    Attention il existe des fichiers dans /home/test dont le nom commence par Rep2.

    Merci de votre aide

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Objet: réponse à la demande 8333087
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /home/test/ -not -regex "^/home/test/\(Rep2\(/.+\)?\)?$" -exec rm -rf {} \; 2>/dev/null
    cordialement,

  3. #3
    Membre à l'essai
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    ça ne fonctionne pas, j'ai le message suivant :

    find /home/test/ -not -regex "^/home/test/\(Rep2\(/.+\)?\)?$" -exec rm -rf {} \;
    find: 0652-017 -not is not a valid option.

    Je suis sur une version AIX 7.10

    Cordialement.

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /home/test/ | sed '/\/Rep2\(\/.*\)\?$/d' |xargs rm -rf
    Seul le dernier étage de la conduite est destructeur. On peut le supprimer pour vérifier la liste des fichiers effacés.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre à l'essai
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Je n'ai pas exécuté la suppression mais la liste des fichiers me donne le contenu complet du répertoire sans exclusion :

    [fxq:/home/test]#find /home/test/ | sed '/\/Rep2\(\/.*\)\?$/d'
    /home/test/
    /home/test/Fic1.txt
    /home/test/Rep1
    /home/test/Rep1/Fic1.txt
    /home/test/Rep1/Fic2.txt
    /home/test/Rep1__AA.txt
    /home/test/Rep2
    /home/test/Rep2/Fic1.txt
    /home/test/Rep2/Fic2.txt
    /home/test/Rep2__AA.txt
    [fxq:/home/test]#

    A suivre ....

  6. #6
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par CHRISTOPHE_86 Voir le message
    find: 0652-017 -not is not a valid option.
    essaye de remplacer -not par ! peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /home/test/ ! -regex "^/home/test/\(Rep2\(/.+\)?\)?$" -exec rm -rf {} \; 2>/dev/null
    nb: pour tester que ce sont les bons fichiers qui sont exclus il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /home/test/ -regex "^/home/test/\(Rep2\(/.+\)?\)?$"

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    D'abord, je corrige un oubli:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /home/test/ |sed '1d;/\/Rep2\(\/.*\)\?$/!d'
    Citation Envoyé par CHRISTOPHE_86 Voir le message
    Je n'ai pas exécuté la suppression mais la liste des fichiers me donne le contenu complet du répertoire sans exclusion
    C'est bien ennuyeux, car chez moi, ça marche parfaitement. Ton Rep2 a-t-il des caractères spéciaux comme l'espace, la contre-oblique, le simple quote ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Membre à l'essai
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Le point d'exclamation pour la négation me semble être la bonne syntaxe, mais l'option -regex n'est pas reconnue.
    [fxq:/home/test]#find /home/test/ ! -regex "^/home/test/\(Rep2\(/.+\)?\)?$"
    find: 0652-017 -regex is not a valid option.
    [fxq:/home/test]#

  9. #9
    Membre à l'essai
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Réponse pour Flodelarab :

    Non je n'ai pas de caractères spéciaux sur le nom de mes répertoires ou de mes fichiers.
    Pour la dernière syntaxe de commande envoyée, ça ne fonctionne pas, la commande ne retourne rien.
    Si je retire le point d'exclamation devant le "d" de la fin j'ai de nouveau l'ensemble des fichiers :
    [fxq:/home/test]#find /home/test/ |sed '1d;/\/Rep2\(\/.*\)\?$/d'
    /home/test/Fic1.txt
    /home/test/Rep1
    /home/test/Rep1/Fic1.txt
    /home/test/Rep1/Fic2.txt
    /home/test/Rep1__AA.txt
    /home/test/Rep2
    /home/test/Rep2/Fic1.txt
    /home/test/Rep2/Fic2.txt
    /home/test/Rep2__AA.txt
    [fxq:/home/test]#

  10. #10
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 848
    Points : 6 535
    Points
    6 535
    Par défaut
    Et avec ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /home/test/ | grep -Ev "^/home/test/(Rep2(/|$)|$)"
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  11. #11
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    Tout est normal. Tu as bien fait d'enlever le point d'exclamation.

    Quelle version de sed ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed --version
    sed (GNU sed) 4.2.2
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  12. #12
    Membre à l'essai
    Responsable de service informatique
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Réponse pour CosmoKnacki ;
    la commande find /home/test/ | grep -Ev "^/home/test/(Rep2(/|$)|$)" fonctionne, c'est ce que j'attendais.
    Maintenant je n'ai plus qu'à finaliser mon script.
    Merci

    Merci aussi au autres contributeurs.

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

Discussions similaires

  1. Commande Find avec L'opérateur OU
    Par mouelhi0712 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 01/09/2012, 00h35
  2. commande find avec regex
    Par flamant dans le forum Shell et commandes POSIX
    Réponses: 7
    Dernier message: 12/02/2012, 23h25
  3. TABulation avec printf de la commande FIND
    Par GoodWear dans le forum Linux
    Réponses: 0
    Dernier message: 16/11/2009, 10h37
  4. Incompréhension avec la commande "find"
    Par Charly94 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 28/12/2006, 19h17
  5. Option -prune avec la commande find
    Par gangsoleil dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 21/04/2006, 18h43

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