2013-05-29 49 views
1

有沒有辦法將grep捕獲的文件複製到新目錄中?在Linux中的grep後複製

我使用下面的命令來比較兩個目錄

diff -q folder1 folder2 | grep 'string' 

我想搬到包含這個「字符串」到一個新的目錄中的文件。

非常感謝,

回答

3

人xargs。

ls *.txt | xargs -I {} cp {} ../{} 

如果我沒記錯的語法正確

所以假設你的DIFF + grep的產生路徑

diff -q folder1 folder2 | grep "Only in blaa" | cut -d " " -f 4- | xargs -I {} cp {} ../{} 
+1

您的意思是'for i in * .txt';見http://partmaps.org/era/unix/award.html#ls – tripleee

+0

感謝您的回覆傢伙,我不太清楚如何使用這個命令與grep結合(我已經看到很多例子在線,但仍然不能理解它)你在上述命令的循環中引用了什麼文本文件? – Error404

+0

我把「ls」放在''中,因爲用其他shell產生的路徑列表替換它會更容易。 –

1

用awk是可能的:

ls | grep string | awk '{print "cp", $1, "newDirectory/"}' | sh 

爲Tripleee說的應該是

ls | awk '/string/ {print "cp", $1, "newDirectory/"}' | sh 

編輯:應爲例工作與diff -q命令:

diff -q folder1 folder2 | awk '/string/ {gsub(":",""); print "cp", $3 "/" $4, "newFolder/"}' | sh 
+0

另外'grep | awk'是一個反模式; http://partmaps.org/era/unix/award.html#grep – tripleee

+0

感謝您的糾正。這種方式呢? : diff -q folder1 folder2 | awk'/ string/{print'cp,$ 3「/」$ 4,「newsDirectory /」}'| sed -e「s /:// g」| sh – zeropol

+0

Gawk擁有'gsub',即使使用常規的Awk,它似乎也可以避免使用'sed'進行後處理 – tripleee

0

試試這個

集 - $(DIFF $ PWD /文件夾1 $ PWD /資料夾| grep afile | tr':''/')

cp $ 3 $ 4 newdir