我只是尝试下面的代码,但它不起作用..请建议更正此代码..
echo abc.txt | while read name; do find . -name $name; done
输出成功:./rak/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
请建议如何解决此问题...
最佳答案
问题是多个条目作为一行发送到管道中,读取将两个字符串拾取到 name
中,然后处理包含这两个字符串的 $name
字符串。
你应该使用类似的东西:
echo -e "abc.txt\npqr.txt" | while read name; do find . -name $name; done
即用换行符分隔项目。
您应该尝试使用 echo "'$name'"
而不是 find
来调试此问题,它会提示发生了什么。
此外,我会在查找中使用 $name
进行引用,就好像文件名的名称中应该有空格一样,那么您将得到与您相同的错误消息原来经历过。
关于shell - 在unix中使用 "find"命令时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308436/