回答:
現在のディレクトリの下にあるすべての* .swpファイルを削除しfind
、次のいずれかの形式でコマンドを使用します。
find . -name \*.swp -type f -delete
この-delete
オプションは、findが一致するファイルを直接削除することを意味します。これは、OPの実際の質問に最適です。
を使用-type f
すると、findはファイルのみを処理します。
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
オプションを-exec
使用すると、ファイルごとに任意のコマンドを実行できます。最初のバリアントはファイルごとに1回コマンドを実行し、2番目のバリアントはできるだけ{}
多くのパラメーターに置き換えて、できるだけ少ないコマンドを実行します。
find . -name \*.swp -type f -print0 | xargs -0 rm -f
出力のパイピングはxargs
、で可能なものよりも複雑なファイルごとのコマンドで使用されます-exec
。このオプション-print0
はfind
、改行ではなくASCII NULLで一致を分離するように-0
指示xargs
し、NULLで区切られた入力を期待するように指示します。これにより、空白を含むファイル名に対してパイプ構造が安全になります。
man find
詳細と例を参照してください。
ホームディレクトリの下で(およびGNU 'find'および 'xargs'を使用して)検索するには、次を使用します。
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
「-print0
」と「-0
」の使用は、名前がASCII NUL「\ 0」文字で区切られることを意味し、これは名前に空白などを含むファイルパスを処理します。「.swp」で終わるディレクトリの下にディレクトリ(またはデバイスファイル、FIFO、またはその他の非ファイル)があると思われる場合は、「find」に「-type f
」オプションを追加できます。ディレクトリしかない場合、上記のコマンドはそれらをノイズで削除できません。