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


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

@Gilles - Так, дякую за оновлення та забезпечення правильності цієї відповіді.
Уейн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.