2012-07-03 40 views
1

我只是想下面的代碼,它不工作..請建議更正此代碼「查找」命令..錯誤使用UNIX

echo abc.txt | while read name; do find . -name $name; done 

輸出成功:./rak/abc.txt

​​

輸出錯誤:發現:0652-009存在丟失的結合

echo "abc.txt pqr.txt" | while read name; do find . -name $name; done 

輸出錯誤:發現:0652-009存在丟失的結合

同樣的錯誤與

echo "abc.txt" "pqr.txt" | while read name; do find . -name $name; done 
echo 'abc.txt' 'pqr.txt' | while read name; do find . -name $name; done 

請建議如何解決這個問題?

回答

4

的問題是,多個條目被髮送到管道爲一條線,讀拿起兩個字符串到name,然後處理包含這兩個字符串的$name

你應該使用類似:

echo -e "abc.txt\npqr.txt" | while read name; do find . -name $name; done 

即以換行分隔這些項目。

您應該嘗試使用echo "'$name'"而不是find進行調試,它會暗示發生了什麼。

此外,我會在查找中使用$name的引號,就好像該文件名預計在其名稱中有一個空格,那麼您將得到與原來相同的錯誤消息。

+0

感謝您的迅速respose ..其工作正常罰款..試圖給+1,但它需要15聲望... – user1011046

+0

@ user1011046:你可以接受的答案:) – rosco