删除早于排除目录的文件 (Linux)

问题描述 投票:0回答:1

我正在尝试从当前位置删除早于 14 天的所有文件和子目录,不包括文件夹“Folder”。我尝试的是

find . -mtime +14 -not -path "./Folder/*" -delete
但是,尽管没有“-delete”标志,它会显示不包括“Folder”子目录的记录,但使用“-delete”标志,它也会尝试删除“Folder”。如何从删除中排除“文件夹”?如何确保太旧的子目录(不包括“文件夹”)即使不为空也会被删除?或者有没有更好的选择来实现这一目标?它必须从外部 Jenkins 服务器上的 groovy 脚本执行,因此简单的 bash 命令是首选方式。

linux
1个回答
0
投票

试试这个:

find . -mindepth 1 -type d -not -name "Folder" -mtime +14 -exec rm -r {} + -o -type f -not -path './Folder/*' -mtime +14 -exec rm {} +

我使用其中设置为超过 14 天的子文件夹和文件以及子文件夹“文件夹”也超过 14 天进行了测试。它删除了正确的子文件夹和跳过的文件夹,可能对您有用。

说明:从文件树中的当前深度开始,它将首先递归删除所有被认为早于 14 天的文件夹及其内容。然后它将删除超过 14 天的文件。您可能会遇到丢失文件错误,这是由于这些文件已从递归语句中删除。

-o
允许它同时查看目录和文件,将两个语句连接在一起。

© www.soinside.com 2019 - 2024. All rights reserved.