0

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

ls -l * | grep Jul 

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

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

谢谢!

4

2 回答 2

4

当然,只是这样做grep Jul是不好的,因为您可能有文件以Jul他们的名字命名。

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

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

where$DIR是您的文件所在的目录(例如'.')并且$DEST是目标目录。

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

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

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

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

于 2013-07-24T18:24:37.383 回答
1

有兴趣了解如何使用 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#)
于 2014-07-01T09:17:15.393 回答