然后我尝试使用这个脚本
for line in `cat dirs.txt`;
do
find "$line" -type f \( -name '*good*' -o -exec grep -F "badbad" {} \; \) -exec echo {} \;;
done
我在每个现有目录上都会收到错误并符合查找条件
find: /home/goods/ : No such file or directory find: /home/bads/ : No such file or directory find: /home/fill/ : No such file or directory
然后我看起来manualy这个dirs存在,我可以阅读它们 为什么会这样?
答案 0 :(得分:1)
问题是文件中有dos(^M
)行结尾。运行dos2unix dirs.txt dirs.txt
应该可以解决问题。理想情况下,您也不应该使用for line in $(cat ...
,而是使用
while IFS= read -r line; do
find "$line" -type f \( -name '*good*' -o -exec grep -F "badbad" {} \; \) -exec echo {} \;
done < dirs.txt
答案 1 :(得分:1)
您必须在文件中输入^ M $
您可以使用命令cat dirs.txt -vET
然后你必须使用命令cat dirs.txt|tr -d "\r" >1.txt