web-dev-qa-db-ja.com

findとxargsを使用してrmでファイルを削除する

私がする時

rm file.txt

または

rm *.txt

rm-fオプションを指定しなかったため、ファイルごとにプロンプ​​トが表示されます。

しかし、私がこれをするとき:

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

ファイルは確認なしで削除されます。

この背後にある論理は何ですか?一部のドキュメントで理由を見つけることは可能ですか?なぜそうなるのか説明できません。

7
Martin G

Rmコマンドのエイリアスが 'rm -i'に設定されています。したがって、次のようにコマンドを直接呼び出すと、

rm file.txt

または

rm *.txt

エイリアスは展開されます。あなたがのようにxargsでそれを呼び出す場合

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

Rmは単純な文字列引数としてxargsに渡され、後でシェルのエイリアス置換なしでxargsによって呼び出されます。エイリアスは、削除する場合に備えて、おそらく〜/ .bashrcで定義されています。

8
Harald Gliebe