Как удалить все файлы и каталоги в каталоге, включая скрытые, кроме .htaccess?

Как удалить все файлы и каталоги в каталоге, включая скрытые, кроме .htaccess?

Как следует из вопроса, у меня есть ситуация, когда у меня есть папка, в которую пользователи могут загружать странные вещи. Настройте cron-задание, чтобы очищать эту папку каждые несколько часов.

Конечно, в целях безопасности у него есть .htaccess. Мой вопрос в том, как удалить все (файлы и каталоги) в этом каталоге, включая скрытые, имена которых начинаются с точки, но не.htaccess?

В настоящее время мне приходится rm -rf *выполнять эту работу, но если пользователь загрузит файл с именем, начинающимся с точки, он не будет удален.

Любая помощь будет оценена по достоинству. Спасибо!

решение1

В Баше:

shopt -s dotglob extglob
rm !(.htaccess)

решение2

Я бы использовал find, например:find /path/to/dir/ -mindepth 1 -not -name .htaccess -delete

Связанный контент