Soyez prudent et composez : utilisez xargs
Voici une approche que j'aime bien, parce qu'elle me permet d'être très prudent : composez un moyen d'afficher uniquement les fichiers que je veux supprimer, puis envoyez-les à rm
en utilisant xargs
. Par exemple :
-
ls
me montre tout
-
ls | grep pdf
m'indique les fichiers que je souhaite conserver. Hmm.
-
ls | grep -v pdf
montre le contraire : tous les sauf ce que je veux garder. En d'autres termes, il affiche la liste des éléments que je souhaite supprimer. Je peux le confirmer avant de faire quoi que ce soit de dangereux.
-
ls | grep -v pdf | xargs rm
envoie exactement cette liste à rm
pour suppression
Comme je l'ai dit, je l'apprécie principalement pour la sécurité qu'il offre : aucun accident n'est possible. rm *
pour moi. Deux autres avantages :
- Il est composable ; vous pouvez utiliser
ls
ou find
pour obtenir la liste initiale, comme vous le préférez. Vous pouvez utiliser tout ce que vous voulez dans le processus de réduction de cette liste. grep
, certains awk
ou autre. Si vous deviez supprimer uniquement les fichiers dont le nom contient une couleur, vous pourriez procéder de la même manière.
- Vous pouvez utiliser chaque outil pour son objectif principal. Je préfère utiliser
find
pour trouver et rm
pour la suppression, au lieu d'avoir à se rappeler que find
accepte un -delete
drapeau. Et si vous faites cela, vous pouvez composer d'autres solutions ; peut-être qu'au lieu de rm
vous pourriez créer un trash
qui déplace le fichier vers la corbeille (ce qui permet de ne pas l'effacer) et de l'acheminer vers cette commande au lieu de la commande rm
. Il n'est pas nécessaire d'avoir find
soutiennent cette option, vous n'avez qu'à y ajouter un tuyau.
アップデート
Voir les commentaires de @pabouk pour savoir comment modifier cela pour gérer certains cas particuliers, comme les sauts de ligne dans les noms de fichiers, les noms de fichiers comme my_pdfs.zip
, etc.