2013-05-31 81 views
0

不能正常工作,我嘗試使用xargs的使用此命令xargs的在linux

grep 'string' | awk '{print $2$3}' | xargs -I {} cp {} /dir1/dir2/dir3 

我得到每每個文件以下錯誤消息選擇它們複製後的文件,我複製

cp: cannot stat `/dir1/dir2/dir3/file1.jpeg': No such file or directory 

的問題是它正確地告訴我目錄,並告訴我它沒有找到,file1.jpeg實際上是在dir3文件中,並且整個路徑是100%正確的

我試圖使用echo cp,我仍然收到每個文件的此消息:

cp /dir1/dir2/dir3/file1.jpeg /new/directory/ 

任何人都可以幫忙嗎? -Appreciated

+0

你想從/ dir1/dir2/dir3或該目錄的cp文件? – Roger

+0

是Roger,實際上有多個文件 – Error404

+0

你沒有得到我的問題,我想問一下/ dir1/dir2/dir3是源目錄還是目的目錄? – Roger

回答

1

您可以刪除grepawk和使用findxargs一起。

事情是這樣的:

find /path/to/search/ -type f -iname "*string*" | xargs -0 cp -t /path/to/copy 

您還可以使用的findexec選項,避免xargs

+0

它實際上並不是一個/ path/to/search,它是前一個diff命令的結果,我試圖把它這樣'diff folder1 folder2 | find find -type f -iname「* string *」.....',我得到了這兩個錯誤信息。找到:'./.config':權限被拒絕。 xargs:參數行太長 – Error404

+0

現在出現一個新的錯誤:'xargs:argument line too long' – Error404