カレントディレクトリの下にある全ての*.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
は、find がファイルごとに任意のコマンドを実行できるようにします。最初のバリアントではファイルごとに1回コマンドを実行し、2番目のバリアントでは{}
を可能な限り多くのパラメータに置き換えることで、可能な限り少ないコマンドを実行します。
find . -name \*.swp -type f -print0 | xargs -0 rm -f
出力を xargs
にパイプすることで、-exec
よりも複雑なファイル単位のコマンドを実行することができる。オプション-print0
は、マッチを改行ではなくASCII NULLで区切るようにfind
に指示し、-0
はNULLで区切られた入力を期待するようにxargs
に指示します。これにより、ホワイトスペースを含むファイル名に対してパイプ構造体が安全になります。
詳細と例については man find
を参照してください。
ホームディレクトリの下を検索するには(GNUの'find'と'xargs'を使うには)、以下のようにします。
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
‘-print0
’ と ‘-0
’ の使用は、名前が ASCII NUL ‘\0’ 文字で区切られることを意味します。もし、’.swp’ で終わるディレクトリの下にディレクトリ (またはデバイスファイル、FIFO、その他の非ファイル) があるかもしれないと思うなら、'find’ に ‘-type f
’ オプションを追加することができます。ディレクトリだけがある場合は、上記のコマンドを実行してもノイズの多い削除に失敗します。
すべてのサブフォルダからすべてのファイルを削除したい場合は、
$ find . -name \* -type f -delete
```のコマンドを使用することができます。