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. Это имеет значение?