2013-07-24 177 views
0

我想复制本月修改的目录中的所有文件。我可以列出这些文件是这样的:复制本月从命令行修改的所有文件

ls -l * | grep Jul 

然后复制他们我是通过xargs试图管结果为cp,但没有成功(我认为),因为我无法弄清楚如何解析ls -l输出到只抓住cp的文件名。

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

谢谢!

+1

[不解析ls](http://mywiki.wooledge.org/ParsingLs) –

回答

4

当然,只是在做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标志意味着它执行以下命令上的每个文件,其中{}被替换的文件名和\;是命令结束

+0

感谢您的详细解答;说得通。 – ACV

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#) 
相关问题