【问题标题】:Move files based on creation date根据创建日期移动文件
【发布时间】:2012-09-04 20:58:23
【问题描述】:

我遇到了以下命令的问题,该命令将 13 天之前的文件从 /unpack 移动到 /storage。

find /home/user/private/data/unpack/* -mtime +13 -exec mv {} /home/user/private/data/unpack/storage/ \;

但是,如果我将这些文件保存在 /storage 文件夹中的子文件夹中,则上述命令会将所有这些文件从其文件夹中移回 /storage

我四处寻找一种从 find 命令中完全排除 /storage 的方法,并找到了一种粗略的修剪方法。我对 linux 和 regex 还很陌生,所以我仍然没有运气让它自己工作。

为有时间提供帮助的专业人士祈祷。

【问题讨论】:

  • 也许这可以通过使用 rsync 来解决?

标签: regex linux shell


【解决方案1】:

这可能对您有用(它是单行,没有以 \ 结尾的字符):

find /home/user/private/data/unpack/* \
     -mtime +13 \
     \( ! -regex '/home/user/private/data/unpack/storage/.*' \) \
     -exec mv {} /home/user/private/data/unpack/storage/ \;

【讨论】:

  • 我尝试在 .sh 脚本中使用您的代码并且运行良好,但遗憾的是结果与我自己的完全相同。仍然将子目录文件夹中的任何文件移回存储文件夹。
  • 非常非常棒。它不仅可以完美运行,而且它不会像我的那样在 shell 窗口中发送垃圾邮件。非常感谢 Zsolt。
【解决方案2】:

知道这是一篇旧帖子,但你尝试过吗

find /home/user/private/data/unpack/* -mtime +13 ! -path /home/user/private/data/unpack/storage/* -exec mv {} /home/user/private/data/unpack/storage/ \;

应该可以的。

对不起,没有'抓住其他命令工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多