2017-03-16 15 views
5

Kiedy zrobićUsuwanie plików z wykorzystaniem rm znaleźć i xargs

rm file.txt 

lub

rm *.txt 

mi monit dla każdego pliku, ponieważ nie określono opcji -f do rm.

Ale kiedy to zrobić:

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

pliki są usuwane bez potwierdzenia.

Jakie są logiki stojące za tym? Czy można znaleźć przyczynę w jakiejś dokumentacji? Nie potrafię wyjaśnić, dlaczego tak się stało.

+2

Opisane zachowanie to zachowanie "rm -i". Czy masz ustawiony alias w powłoce dla polecenia rm? Czy "alias rm" daje jakieś wyjście? – Harald

+0

'alias rm' podaje wynik' rm -i', więc to wyjaśnia. Dzięki – Martin

Odpowiedz

5

Masz zestaw aliasów dla polecenia rm na "rm -i". Dlatego jeśli wywołać komendę bezpośrednio w

rm file.txt 

lub

rm *.txt 

alias zostanie poszerzona. Jeśli będzie to nazwać z xargs jak w

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

rm jest przekazywana jako prosty ciąg argumentu xargs i później jest wywoływana przez xargs bez aliasu zastąpienia muszli. Alias ​​prawdopodobnie jest zdefiniowany w ~/.bashrc, na wypadek gdybyś chciał go usunąć.