在unix中使用“find”命令时出错

时间:2012-07-03 09:53:24

标签: shell unix

我只是尝试下面的代码并且它无法运行..请建议更正此代码..

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

输出成功:./ kk / abc.txt

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

输出错误:找到: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

请建议如何解决此问题...

1 个答案:

答案 0 :(得分:4)

问题是多个条目作为一行发送到管道中,读取将两个字符串都接收到name,然后处理包含两个字符串的$name

你应该使用类似的东西:

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

即。用换行符分隔项目。

您应该尝试使用echo "'$name'"代替find进行调试,并且会暗示发生了什么。

此外,我会在查找中使用$name引用,好像文件名应该在其名称中有空格,然后您将得到与您最初经历的相同的错误消息。 / p>