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 -f
xargs
への出力のパイプは、-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