相关疑难解决方法(0)

用于删除超过 3 天的文件的 Cron 作业

我需要使用 3 个不同目录中的 cron 作业删除超过 3 天的文件。(这 3 个目录是父目录/a/b/c/1& /a/b/c/2& 的子目录/a/b/c/3)可以用 crontab 中的一行来完成吗?

cron shell-script timestamps rm files

23
推荐指数
2
解决办法
11万
查看次数

使用 find 删除除某个子目录中的所有文件

我想递归删除文件夹中一段时间​​内未访问的a所有文件,子文件夹中的所有文件除外b

find a \( -name b -prune \) -o -type f -delete
Run Code Online (Sandbox Code Playgroud)

但是,我收到一条错误消息:

find: -delete 操作会自动打开 -depth,但 -prune 在 -depth 生效时什么也不做。如果您想继续,只需明确使用 -depth 选项。

添加-depth会导致b包含所有文件,这绝不能发生。

任何人都知道一种安全的方法来使这项工作?

directory find rm

15
推荐指数
1
解决办法
6484
查看次数

为什么“查找-删除”意味着“-深度”?

GNU 的手册页find明确警告使用-delete意味着-depth. 但是,我找不到对此要求的任何解释:

\n
\n

-delete删除文件; 如果删除成功则为 true。如果删除失败,则会发出错误消息。[\xe2\x80\xa6] 使用-delete自动打开该-depth选项。

\n
\n
find --version\nfind (GNU findutils) 4.8.0\n
Run Code Online (Sandbox Code Playgroud)\n

这隐式是后序行走:

\n
find /path -type f -delete\n
Run Code Online (Sandbox Code Playgroud)\n

但这是预序遍历,是 的常用遍历方法find

\n
find /path -type f -exec rm -f {} +\n
Run Code Online (Sandbox Code Playgroud)\n

如果我想用-prune我就不能用-delete,而必须使用更麻烦的-exec rm {} +,但最终效果似乎是一样的。

\n

-delete操作不会删除目录,那么为什么find -delete需要暗示呢-depth

\n

find gnu rm

8
推荐指数
1
解决办法
1518
查看次数

标签 统计

rm ×3

find ×2

cron ×1

directory ×1

files ×1

gnu ×1

shell-script ×1

timestamps ×1