linux – すべてのサブディレクトリで一致するファイルを削除する

find linux shell

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で可能なものよりも複雑なファイル単位のコマンドで使用されます。オプション -print0find にマッチしたものを改行の代わりに ASCII NULL で区切るように指示し、 -0xargs に 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


タイトルとURLをコピーしました