Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

commande 'rm' sur une série de fichiers

12 réponses
Avatar
edemiollis
bonjour,

Sous debian je cherche à supprimer une liste de fichiers ayant une
extension .EXT par exemple.
Tous ces fichiers se trouve dans une arborescence pouvant aller
jusqu'à 30 niveaux de sous-répertoires.

J'ai essayé :

find ./ -name '*.ext' | xargs rm
et
find ./ -name '*.ext' | xargs 'rm'

Mais apparement, cela ne fonctionne pas.
Peut-être dois-je passer par la création d'un fichier contenant les
chemins vers chacun de ces fichiers, mais là je suis trop newbie et je
ne connapis pas la syntaxe
Help ... et merci d'avance.

2 réponses

1 2
Avatar
Stephane Chazelas
2003-11-25, 10:56(+01), Glenny:
[...]
-> find ./ -name '*.ext' | xargs rm
-> et
-> find ./ -name '*.ext' | xargs 'rm'
->

find ./ -name "*.ext" | xargs -l1 rm


??? Où est l'intérêt ? Tous les inconvénient d'xargs sans ses
avantage. Si le but est de faire un truc à peu près sûr et
portable avec le xargs standard, il faut faire quelque chose
comme :

find .//. ( -name '*.ext' -o -name '.*.ext' -o -name .ext )
! -type d -print | sed 's/./&/g' | awk '{
if (NR > 1) {
printf "%s", line
if ($0 !~ ////) printf ""
printf "n"
}
line = $0
}
END { print line }' | xargs command

C'est à dire que suivant les versions de find yen a pour qui
'*.ext' inclue les dotfiles d'autres non.

Tant qu'à faire, pas la peine d'essayer d'effacer les
répertoires puisque rm ne voudra pas.

Faut escaper tous les espacements, quotes, sauts de lignes pour
xargs sauf les sauts de lignes qui séparent deux fichiers (d'où
le .//. sed et awk).

autoload -U zargs
zargs ./**/*.ext(D^/) -- rm -f

en zsh (l'inconvénient et que ça construit d'abord la liste (et
la trie) avant de la passer à zargs, ya une perte d'efficacité
de ce côté là).

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]

Avatar
Vincent Lefevre
Dans l'article ,
Stephane Chazelas écrit:

autoload -U zargs
zargs ./**/*.ext(D^/) -- rm -f


Quitte à utiliser zsh, une autre possibilité:

zmodload -i zsh/files
rm -f ./**/*.ext(D^/)

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

1 2