Find : ne pas inclure les sous répertoires ?
Résolu
duddy67
-
duddy67 -
duddy67 -
Bonjour,
J'ai de nouveau un petit pb avec la commande find.
Quand je veux déplacer tous les fichiers txt de dir1 vers dir2 je fais:
find /path/dir1 -name '*.txt' -exec mv {} /path/dir1/dir2 \; 2>/dev/null
jusque là c'est bon.
Maintenant supposons que j'ai de nouveaux fichiers txt dans dir1 et que je veuille cette fois les déplacer dans dir3:
find /path/dir1 -name '*.txt' -exec mv {} /path/dir1/dir3 \; 2>/dev/null
et là pb car tous les fichiers txt, même ceux qui étaient dans dir2, se retrouvent dans dir3.
J'ai vu que l'option -prune de find n'incluait pas les sous répertoires
mais ça ne marche pas chez moi.
Quelqu'un pourrait m'aider ?
Merci.
J'ai de nouveau un petit pb avec la commande find.
Quand je veux déplacer tous les fichiers txt de dir1 vers dir2 je fais:
find /path/dir1 -name '*.txt' -exec mv {} /path/dir1/dir2 \; 2>/dev/null
jusque là c'est bon.
Maintenant supposons que j'ai de nouveaux fichiers txt dans dir1 et que je veuille cette fois les déplacer dans dir3:
find /path/dir1 -name '*.txt' -exec mv {} /path/dir1/dir3 \; 2>/dev/null
et là pb car tous les fichiers txt, même ceux qui étaient dans dir2, se retrouvent dans dir3.
J'ai vu que l'option -prune de find n'incluait pas les sous répertoires
mais ça ne marche pas chez moi.
Quelqu'un pourrait m'aider ?
Merci.
A voir également:
- Find : ne pas inclure les sous répertoires ?
- Find and mount - Télécharger - Récupération de données
- Ava find - Télécharger - Divers Utilitaires
- Find junk files - Télécharger - Nettoyage
- Find grep - Forum Linux / Unix
- The system cannot find any bootable devices - Forum BIOS
2 réponses
Salut,
$ find duddy67/ -name '*.txt' | sort
duddy67/dir1/fic1.txt
duddy67/dir1/fic2.txt
duddy67/dir1/fic3.txt
duddy67/dir1/fic4.txt
duddy67/dir1/fic5.txt
duddy67/dir1/fic6.txt
duddy67/dir2/fic1.txt
duddy67/dir2/fic2.txt
duddy67/dir2/fic3.txt
duddy67/dir3/fic1.txt
duddy67/dir3/fic2.txt
duddy67/dir3/fic3.txt
$ find duddy67/ -path 'duddy67/dir2' -prune -o -name '*.txt'|sort
duddy67/dir1/fic1.txt
duddy67/dir1/fic2.txt
duddy67/dir1/fic3.txt
duddy67/dir1/fic4.txt
duddy67/dir1/fic5.txt
duddy67/dir1/fic6.txt
duddy67/dir2
duddy67/dir3/fic1.txt
duddy67/dir3/fic2.txt
duddy67/dir3/fic3.txt
$ find duddy67/dir1 -path 'duddy67/dir2' -prune -o -name '*.txt' -exec mv -v {} duddy67/dir3 \;
`duddy67/dir1/fic5.txt' -> `duddy67/dir3/fic5.txt'
`duddy67/dir1/fic1.txt' -> `duddy67/dir3/fic1.txt'
`duddy67/dir1/fic6.txt' -> `duddy67/dir3/fic6.txt'
`duddy67/dir1/fic3.txt' -> `duddy67/dir3/fic3.txt'
`duddy67/dir1/fic4.txt' -> `duddy67/dir3/fic4.txt'
`duddy67/dir1/fic2.txt' -> `duddy67/dir3/fic2.txt'
$ find duddy67/ -name '*.txt' | sort
duddy67/dir2/fic1.txt
duddy67/dir2/fic2.txt
duddy67/dir2/fic3.txt
duddy67/dir3/fic1.txt
duddy67/dir3/fic2.txt
duddy67/dir3/fic3.txt
duddy67/dir3/fic4.txt
duddy67/dir3/fic5.txt
duddy67/dir3/fic6.txt
Salut,
Utilises plutôt l'option "-maxdepth n" :
Par exemple pour exclure le rep "dir2" de ta recherche :
Utilises plutôt l'option "-maxdepth n" :
find /path/dir1 -maxdepth 1 -name '*.txt' -exec mv {} /path/dir1/dir2 \; 2>/dev/null L'option "-prune" étant beaucoup plus complexe qu'elle n'en a l'air à utiliser et n'a pas du tout l'utilité de la description faite par le "man find".
Par exemple pour exclure le rep "dir2" de ta recherche :
find /path/dir1 \( -name dir2 -prune \) -o \( -name '*.txt' \) -exec mv {} /path/dir1/dir3 \; 2>/dev/nulldevrait le faire...