Назад | Перейти на главную страницу

Безопасное удаление всех файлов с заданным именем

В Mac OS X файлы .DS_Store, кажется, содержат пользовательские настройки просмотра для каталога, когда он просматривается в Finder (графический интерфейс файлового менеджера). Я хочу, чтобы в каждом каталоге использовались мои настройки просмотра по умолчанию.

Безопасна ли эта команда оболочки для удаления всех из них (на которые у меня есть разрешение) с диска? то есть никаких шансов или ложных срабатываний или других неудач.

cd /
find . -name .DS_Store -print0 2>/dev/null | xargs -0 -p rm

Ни один из приведенных до сих пор ответов не касался проблемы безопасности, и я тоже не могу исчерпывающе. Тем не менее, я могу сказать, что показываемая вами команда будет работать так, как вы предполагаете (плюс у вас есть дополнительная безопасность, поскольку вам будет предлагаться перед удалением каждого файла).

Я бы добавил -type f для небольшой дополнительной безопасности.

Недостатком других ответов является то, что они либо не предлагают продолжить, либо медленно (но запрос разрешения делает это спорным), не сработают, если нужно удалить большое количество файлов (превышение максимальной длины командной строки) или не удалось бы, если бы в имени файла были пробелы (что не применяется в этом случае).

Вот еще одна форма для полноты:

find / -name .DS_Store -type f -exec rm -i {} +

Он запрашивает подтверждение. Скорость была бы примерно такой же, как у xargs версия (за исключением того, что она запрашивает каждый файл). Если это применимо, он будет обрабатывать имена файлов с пробелами. Он будет обрабатывать любое количество файлов.

Почему бы просто не использовать find для всего?

find / -name .DS_Store -delete