web-dev-qa-db-fra.com

Suppression de fichiers avec rm à l'aide de find et xargs

Quand je fais

rm file.txt

ou

rm *.txt

Je suis invité pour chaque fichier, car je n'ai pas spécifié le -f option pour rm.

Mais quand je fais ça:

find . -type f -name '*.txt' | xargs rm

les fichiers sont supprimés sans confirmation.

Quelle est la logique derrière cela? Est-il possible de trouver la raison dans certains documents? Je ne peux pas expliquer pourquoi ce serait le cas.

7
Martin G

Vous avez un alias défini pour la commande rm sur 'rm -i'. Par conséquent, si vous appelez la commande directement comme dans

rm file.txt

ou

rm *.txt

l'alias sera développé. Si vous l'appelez avec xargs comme dans

find . -type f -name '*.txt' | xargs rm

Le rm est passé comme un simple argument de chaîne à xargs et est ensuite invoqué par xargs sans substitution d'alias du Shell. Votre alias est probablement défini dans ~/.bashrc, au cas où vous souhaiteriez le supprimer.

8
Harald Gliebe