2013-07-24 90 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#) 
相關問題