如何删除目录中的所有文件和目录(包括隐藏文件和目录,.htaccess 除外)?

如何删除目录中的所有文件和目录(包括隐藏文件和目录,.htaccess 除外)?

正如问题所暗示的,我遇到过这种情况:我有一个文件夹,用户可以在其中上传奇怪的东西。设置一个 cron 作业每隔几个小时清理一次此文件夹。

出于安全原因,它有一个 .htaccess,当然,我的问题是,我怎样才能删除该目录中的所有内容(文件和目录),包括名称以点开头的隐藏文件,但不包括.htaccess

我目前必须rm -rf *完成这项工作,但如果用户上传名称以点开头的文件,则不会被删除。

任何帮助都将不胜感激。谢谢!

答案1

在bash中:

shopt -s dotglob extglob
rm !(.htaccess)

答案2

我会使用 find,例如:find /path/to/dir/ -mindepth 1 -not -name .htaccess -delete

相关内容