Linuxでサブディレクトリのすべての.swpファイルを削除するにはどうすればいいですか?
95 Alex 2010-02-22
カレントディレクトリの下にあるすべての*.swpファイルを削除するには、以下のいずれかの形式でfindコマンドを使用します
find . -name \*.swp -type f -delete-deleteオプションは、findがマッチしたファイルを直接削除することを意味します。これは OP の実際の質問に最もマッチしています。-type fを使用すると、検索がファイルのみを処理することを意味しますfind . -name \*.swp -type f -exec rm -f {} \;find . -name \*.swp -type f -exec rm -f {} +オプション-execは、find がファイルごとに任意のコマンドを実行することを可能にします。最初のバリアントはファイルごとに一度だけコマンドを実行し、2番目のバリアントは{}をできるだけ多くのパラメータに置き換えることで、できるだけ少ない数のコマンドを実行しますfind . -name \*.swp -type f -print0 | xargs -0 rm -fxargsへの出力のパイプは、-execで可能なものよりも複雑なファイル単位のコマンドで使用されます。オプション-print0はfindにマッチしたものを改行の代わりに ASCII NULL で区切るように指示し、-0はxargsに NULL で区切られた入力を期待するように指示します。これにより、ホワイトスペースを含むファイル名に対してパイプ構造が安全になります
詳細や例はman findを参照してください
160 Lachlan Roche 2010-02-22
find . -name '*.swp' -delete
ファイル名に埋め込まれたスペースのリスクを除去するために、削除自体を行うことを見つけることを持っている…余分なセキュリティのために、ファイルのみに-type fを追加することも検討してください
19 Zeograd 2010-02-22
find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;
bash 4.0
shopt -s globstar
rm -f /path/**/*.swp
5 user31894 2010-02-22
(GNUの’find’と’xargs’を使って)ホームディレクトリの下を検索するには、わたしはこれを使います
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
-print0‘ と ‘-0‘ の使用は、名前が ASCII NUL ‘0’ 文字で区切られることを意味します。もし、’.swp’ で終わるディレクトリの下にディレクトリ (またはデバイスファイル、FIFO、その他の非ファイル) があるかもしれないと思ったら、’find’ に ‘-type f‘ オプションを追加することができます。ディレクトリだけがある場合は、上記のコマンドではノイズの多い削除に失敗します
2 Jonathan Leffler 2010-02-22
すべてのサブフォルダからすべてのファイルを削除したい場合は、提供されているコマンドを使用することができます
$ find . -name \* -type f -delete
0 Chaklader Asfak Arefe 2019-11-17

