bashエイリアスは適切に記述されていません(単一引用符はあまり使用されていません)。代わりに:
alias rm~='find . -name "*~" -print0 | xargs -0 /bin/rm -f'
今、私は個人的にパイプとの無駄な使用が好きではないxargs
ので、あなたのエイリアスは次のように書く方が良いでしょう:
alias rm~='find . -name "*~" -type f -exec /bin/rm -fv -- {} +'
-type f
オプションファイルのみ(いないなど、ディレクトリ、リンク、)、発見するように-v
するオプションrm
の冗長(何それの削除プリントアウト)されるようにします。+
最後になるようにfind
動作しrm
、すべての見つかったファイルと(の唯一のインスタンススポーンrm
、代わりのファイルごとに1つ)。
今からman bash
:
ほとんどすべての目的で、エイリアスはシェル関数によって置き換えられます。
エイリアスの代わりに、関数を使用することをお勧めします:.bash_aliases
ファイル内でエイリアスをコメントし(つまり、#
その行の前に置きます)、file .bashrc
にこの関数を置きます(ファイル内のどこでも、最後に問題ありません) :
rm~() {
find . -name "*~" -type f -exec /bin/rm -fv -- {} +
}
また、他の答えが言及しているように、-delete
コマンドを使用して見つけることができます。この場合、rm~
関数は次のようになります。
rm~() {
find . -name "*~" -type f -printf "Removing file %p\n" -delete
}
実際、たとえば--dry-run
、引数を取り、削除するものだけを出力するクールな関数を作成できます。
rm~() {
case "$1" in
"--dry-run")
find . -name "*~" -type f -printf "[dry-run] Removing file %p\n"
;;
"")
find . -name "*~" -type f -printf "Removing file %p\n" -delete
;;
*)
echo "Unsupported option \`$1'. Did you mean --dry-run?"
;;
esac
}
次に使用:
rm~ --dry-run
削除されるファイルのみを表示する(ただし、削除はしない)
rm~
これに満足しているとき。
ニーズに合わせて拡張しましょう!
注意。変更を有効にするには、新しいターミナルを開く必要があります。