[bash] find + exec

Applications multimedia / jeux
AchilleFraisse
Elfe
Messages : 618
Inscription : dim. 27 avr. 2014, 09:32

[bash] find + exec

Message par AchilleFraisse »

bonjour,
j'ai voulu supprimer tous me dossiers vide dans un répertoire :

Code : Tout sélectionner

find . -type d -empty -exec rm -rf {} \;
mais sans faire expres j'ai oublié le -empty ...
je m'en suis rendu compte peu de temps apres, mais j'ai 1200 répertoires sur 13000 qui se sont effacés.
j'aurai voulu savoir les répertoires que j'ai perdu.
en faisant un find classique, je constate qu'il liste les répertoires par ordre alphabétique. est-ce qu'il en est de même pour la suppression (exec rm ...) ?
Avatar de l’utilisateur
papajoke
Elfe
Messages : 779
Inscription : sam. 30 août 2014, 19:54

Re: [bash] find + exec

Message par papajoke »

bonjour
AchilleFraisse a écrit : ven. 24 nov. 2023, 07:40 je constate qu'il liste les répertoires par ordre alphabétique. est-ce qu'il en est de même pour la suppression (exec rm ...) ?
les commandes rm sont exécutés une à une dans l'ordre ou arrivent les sorties de find

par défaut cela ne devrait pas être l'ordre alphabétique find . -type d | more

note: si le dossier est vide, pourquoi avoir ajouté -rf ? rmdir est suffisant
Dernière modification par papajoke le ven. 24 nov. 2023, 15:40, modifié 1 fois.
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [bash] find + exec

Message par avi3000 »

Bonjour,
AchilleFraisse a écrit : je constate qu'il liste les répertoires par ordre alphabétique.
Non. Si c'est le cas, c'est un pur hasard.

Code : Tout sélectionner

find . -type d
.
./find
./find/testsuite
./find/testsuite/find.gnu
./find/testsuite/config
./find/testsuite/find.posix
./doc
./tests
./tests/find
./tests/xargs
./tests/misc
./build-aux
./locate
./locate/testsuite
./locate/testsuite/locate.gnu
./locate/testsuite/config
./xargs
./xargs/testsuite
./xargs/testsuite/xargs.sysv
./xargs/testsuite/inputs
./xargs/testsuite/xargs.posix
./xargs/testsuite/xargs.gnu
./xargs/testsuite/config
./m4
./po
./gl
./gl/m4
./gl/lib
./gl/lib/glthread
./gl/lib/unictype
./gl/lib/malloc
./gl/lib/uniwidth
./lib
./gnulib-tests
./gnulib-tests/glthread
./gnulib-tests/uniwidth
find utilise FTS pour parcourir une arborescence et ne lui fournit pas de routine de comparaison.

Avec ou sans -exec, l'odre d'affichage est le même.

find . -type d -exec echo {} \; et find . -type d affichent l'arborescence dans le même ordre.
Répondre