Как удалить все файлы с заданным именем во всех подкаталогах?


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
всегда ставьте двойные кавычки вокруг подстановок переменных, иначе ваша команда не будет работать с именами файлов, содержащими определенные специальные символы (пробелы, подстановочные знаки и обратные слэши).
Жиль "ТАК - перестань быть злым"

@ Жиль - Да, спасибо за обновление и за то, что этот ответ был правильным.
Уэйн
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.