递归删除但保留 .gitignore 文件

递归删除但保留 .gitignore 文件

我已经尝试了 SU 中的几种方法,但无法做到这一点:我有一个文件夹(例如:/var/www/tmp/),其中包含多个文件和目录。我想删除此目录中的所有文件和文件夹,但保留位于 /var/www/tmp 中的隐藏文件,我该怎么做?

谢谢!

编辑:明确地说,我想在 cronjob 中使用它

答案1

find /var/www/tmp -mindepth 1 -maxdepth 1 ! -name ".*" -exec rm -r -- {} +

将在最大(和最小)深度 1 处查找文件(即直接在给定目录中的文件),并且不是以句点开头并rm -r以匹配项作为参数执行。

在确切了解它的工作原理之前,请先使用简单的回声或其他方法尝试一下,以免弄巧成拙。

这解决了您关于保留所有隐藏文件的问题。您的主题有点不同,但 find 命令很容易修改为忽略名为 的文件.gitignore

答案2

除非你设置了 shell 选项dotglob,否则cd /var/www/tmp; rm -rf *将执行你想要的操作

相关内容