2014-05-17 42 views
0

當我將有限的文件放到另一個文件夾時,文件格式爲.flv。這是使用命令:如何在unix中通過命令複製受限文件?

ls -ltr | grep 'May 16 2013' | awk '{print $9}' | xargs cp -rf /root/directory/. 

我該怎麼做?

+0

調試步驟1:刪除最後一個管道並查看輸出是否符合您的預期。 – merlin2011

+2

不解析ls,使用find(1); –

+0

其他所有其他 - 如果您已經使用'awk',則不需要使用'grep':'ls .. | awk'/ May 16 2013/{print $ 9}'| xargs ..'。 –

回答

2

正如GoodPerson提到的,更簡單的方法是使用findexec

find . -name '*May 16 2013*' -exec cp -rf {} /root/directory \; 

觀察到,在上面的命令時,命令cp -rf {} /root/directory將每個文件或目錄由find發現來執行,並且其中所述目錄被代入{}

更新:上面的命令假定(可能不正確)您的文件名包含May 16 2013。如果您確實在該日期修改了文件,問題會稍微複雜一些,取決於您的版本find,但是this answer告訴我們如何使用舊版本的查找來完成此操作。

首先,創建兩個帶有指定日期的參考文件。然後你會發現生活在這些日期之間的文件。以下三個命令會發現5月16日2014年

touch -d '16 May 2014' /tmp/Ref 
touch -d '17 May 2014' /tmp/Ref2 
find . -maxdepth 1 -newer /tmp/Ref -and -not -newer /tmp/Ref2 

文件如果您滿意的find的結果,然後你可以追加exec,因爲我有以上。

+0

不確定日期是否在文件的名稱:-)也許'-ctime'或'-cmin'代替? – cadrian

+0

@cadrian,非常好的一點。我以爲他在那個日期尋找名字。 – merlin2011

+0

@cadrian,在找出日期標記的正確語法之後,我會回答這個問題。 – merlin2011