【问题标题】:Remove files in subdirectories older than 1 day with Linux command使用 Linux 命令删除超过 1 天的子目录中的文件
【发布时间】:2016-10-27 19:46:58
【问题描述】:

老实说,我离成为一个像样的 bash 脚本编写者还差得很远,但我做了一些研究,发现了一个似乎有用的命令

find /path/to/files* -mtime +1 -exec rm {} \;

问题是这一行是否会删除目录?因为我只想删除图像文件(实际上是 *.jpeg 格式)

【问题讨论】:

  • 你可以man rm。 rm 不会删除目录,除非您以递归 (-r) 模式运行它。你必须使用rmdir 来删除目录。
  • 这将添加过滤器以确保它只匹配以.jpg结尾的文件:find /path/to/files -name '*.jpg' -type f -mtime +1 -delete

标签: linux bash rm


【解决方案1】:

不,没有-r 标志的rm 不会删除目录。

您似乎想添加更多过滤器:

  • -type f 仅匹配文件
  • -name '*.jpeg' 仅匹配以 .jpeg 结尾的文件

最后,您可以使用更简单的-delete,而不是-exec rm {} \;

放在一起,这看起来更适合你:

find /path/to/files* -mtime +1 -type f -name '*.jpeg' -delete

【讨论】:

    【解决方案2】:

    然后将搜索结果缩小到 *.jpeg 文件:

    find /path/to/files* -mtime +1 -type f -name "*.jpeg" -exec rm {} \;
    

    删除前最好先删除 exec 参数进行试运行:

    find /path/to/files* -mtime +1 -type f -name "*.jpeg"
    

    每一行都将传递给 rm 命令,仅此而已。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      相关资源
      最近更新 更多