すべてのサブディレクトリで指定された名前のすべてのファイルを削除するにはどうすればよいですか?


25

ホームディレクトリのすべてのサブディレクトリにある特定の名前のすべてのファイルを削除したい。

私は試した:

rm -r file

私のホームディレクトリにありますが、そのファイルがそのディレクトリに存在しないため、機能しませんでした。

回答:



12

@tanteの回答の詳細として、これらのファイルを削除する前に、使用するファイルリストが正しいことを確認することをお勧めします。

find <source_dir> -name <filename> -print

検査が有効なリストを示している場合

find <source_dir> -name <filename> -delete

一時保持ディレクトリを使用して多くのディレクトリでこれを行う場合の別のオプション:

mkdir <dest_dir>
for i in <list_of_directories>
do
  find "$i" -name <filename> -exec /bin/mv {} <dest_dir>
done

# check dest_dir
ls dest_dir
rm -rf <dest_dir>

いつものように、実行する前にスクリプトの精度を確認し、何か問題が発生した場合に備えて常にバックアップを用意してください。


3
変数の置換は常に二重引用符で囲みます。そうしないと、特定の特殊文字(空白、ワイルドカード、バックスラッシュ)を含むファイル名でコマンドが機能しなくなります。
ジル「SO-悪であるのをやめる」

@Gilles-はい、この回答が正しいことを更新および確認していただきありがとうございます。
ウェイン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.