find
очень полезно для выборочного выполнения действий над целым деревом.
find . -type f -name ".Apple*" -delete
Здесь -type f
он удостоверяется, что это файл, а не каталог, и может быть не совсем тем, что вам нужно, поскольку он также пропускает символические ссылки, сокеты и другие вещи. Вы можете использовать ! -type d
, что буквально означает не каталоги, но тогда вы также можете удалить символьные и блочные устройства. Я бы посоветовал взглянуть на -type
предикат на странице руководства find
.
Чтобы сделать это строго с подстановочным знаком, вам нужна расширенная поддержка оболочки. Bash v4 имеет globstar
опцию , которая позволяет вам рекурсивно сопоставлять подкаталоги, используя **
. zsh
а ksh
также поддерживать эту модель. Используя это, вы можете сделать rm -rf **/.Apple*
. Это не стандарт POSIX и не очень переносимый, поэтому я бы не использовал его в скрипте, но для одноразового действия интерактивной оболочки это нормально.
find . -type d -name .Apple*
к работе - в нем перечислены все папки. Тем не менее, это не удается, когда я добавляю-delete
в конце. Это просто возвращается с кратким описанием использования. Он работает на BusyBox v1.1.1. Это имеет значение?