【问题标题】:Cron Job - Command to delete all .flv files everydayCron Job - 每天删除所有 .flv 文件的命令
【发布时间】:2010-09-29 18:58:57
【问题描述】:

我有一个每天通过 cron 运行的命令:

find /home/get/public_html/videos -daystart -maxdepth 0 
-mtime +1 -type f -name "*.flv" |xargs rm -f

问题在于它不会删除目录中存在 1 天或更长时间的 .flv 文件。

我怎样才能更正上面的命令?

编辑:Paul - 命令“ls -l /home/get/public_html/videos”会生成 2000 多个文件,但这里有 2 个应该删除:

-rw-r--r--  1 get get   3501188 Jan  4 15:24 f486cf0a2b6bb40e4c50c991785084131231104229.flv
-rw-r--r--  1 get get  10657314 Jan  4 17:51 f5f1490ddaa11a663686f9d06fb37d981231112941.flv

【问题讨论】:

  • 它有什么作用?它是否删除旧文件,而不是删除文件,给出错误......?
  • 它不会删除任何内容,也不会返回任何内容,因为我认为它没有找到任何内容。不过没有错误。
  • 您能否将 ls -l /home/get/public_html/videos 的结果添加到您的问题中?
  • 如果按照其他人的建议将其设为 -maxdepth 1 会发生什么? (现在只是-print,而不是xargs!)? (我没有在我可以访问的 Unix 系统上找到 GNU)
  • 你说得对,Paul,它与 Vinko Vrsalovic 所说的 -maxdepth 1 一起工作。现在可以了! :)

标签: shell command-line file cron fedora


【解决方案1】:

最好在 find 中使用 -print0,在 xargs 中使用 -0,以防一个文件具有不常见的名称。

另外,您想使用 -maxdepth 1 在指定目录中实际查找内容。

-maxdepth 0 表示只在命令行中列出的目录中查找,不会检查这些目录的内容。

【讨论】:

  • 正确的 -maxdepth 1 是我需要的。
【解决方案2】:

你的意思是,如果你有一个目录/home/get/public_html/videos/foo 它不会删除其中的文件?那是因为您设置了 -maxdepth 0 参数集,它可以防止 find 下降到子目录中。

【讨论】:

  • 我希望命令在目录“videos”中搜索,而不是进入任何子文件夹。这是否意味着我应该删除“-maxdepth 1”?
  • 不,在这种情况下 -maxdepth 1 就是你想要的。
【解决方案3】:
-maxdepth 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多