【问题标题】:Copying all the files modified this month from the command line从命令行复制本月修改的所有文件
【发布时间】:2013-07-24 09:01:57
【问题描述】:

我想复制本月修改过的目录中的所有文件。我可以像这样列出这些文件:

ls -l * | grep Jul 

然后为了复制它们,我试图通过xargs 将结果通过管道传输到cp,但没有成功(我认为)因为我不知道如何解析ls -l 输出以获取cp 的文件名。

我确信有很多方法可以做到这一点;尽管我也有兴趣查看其他方法,但我会向可以向我展示如何以这种方式解析 ls -l 的人给出正确的答案(或者让我从那个位置上下来)。

谢谢!

【问题讨论】:

标签: shell grep pipe ls


【解决方案1】:

当然,只使用grep Jul 是不好的,因为您可能有文件名称中包含Jul

实际上,find 可能是适合您工作的工具。像这样的:

find $DIR -maxdepth 1 -type f -mtime -30 -exec cp {} $DEST/ \;

其中$DIR 是您的文件所在的目录(例如“.”),$DEST 是目标目录。

  • -maxdepth 1 标志意味着它不会在子目录中查找文件(不是递归的)

  • -type f 标志意味着它只查看常规文件(例如,不查看目录)

  • -mtime -30 表示它查看修改时间超过 30 天的文件(+30 将超过 30 天)

  • -exec 标志表示它对每个文件执行以下命令,其中{} 替换为文件名,\; 是命令的结尾

【讨论】:

  • 感谢详细解答;有道理。
【解决方案2】:

有兴趣了解如何使用 zsh 完成此操作

ls -lt *.*(mM0)

上个月

ls -lt *.*(mM1)

或用于精确的日期日期范围

autoload -U age
ls -tl *.*(e#age 2014/06/07 now#)
ls -tl *.*(e#age 2014/06/01 2014/06/20#)

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2019-10-24
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多