linux找不到这样的文件或目录但存在

时间:2014-09-14 16:32:35

标签: linux unix find

然后我尝试使用这个脚本

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存在,我可以阅读它们 为什么会这样?

2 个答案:

答案 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

修剪它们