Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查列表中的每个文件(位于文件中)是否存在于bash中_Bash - Fatal编程技术网

检查列表中的每个文件(位于文件中)是否存在于bash中

检查列表中的每个文件(位于文件中)是否存在于bash中,bash,Bash,我有一个文本文件(ListOfAllFiles.txt),它有一个500个文件的列表,其中有些存在,有些不存在 我想制作两个文本文件,指出哪些文件存在,哪些不存在 这是我迄今为止的代码: #!/bin/bash for f in $(cat /path/to/ListOfAllFiles.txt) do if [[ -f $f ]]; then echo $f > /path/to/FilesFound.txt else echo $f > /pat

我有一个文本文件(ListOfAllFiles.txt),它有一个500个文件的列表,其中有些存在,有些不存在

我想制作两个文本文件,指出哪些文件存在,哪些不存在

这是我迄今为止的代码:

#!/bin/bash


for f in $(cat /path/to/ListOfAllFiles.txt)
do
  if [[ -f $f ]]; then 
     echo $f > /path/to/FilesFound.txt
  else
     echo $f > /path/to/FilesNOTFound.txt
  fi
done

我做错了什么???

您最大的问题是每次通过循环都会覆盖
/path/to/FilesFound.txt
/path/to/FilesNOTFound.txt
;您应该使用
>
,而不是使用
>
。解决了这个问题,并对健壮性进行了其他改进,我们得到:

#!/bin/bash

echo -n > /path/to/FilesFound.txt     # reset to empty file
echo -n > /path/to/FilesNOTFound.txt  # reset to empty file

while IFS= read -r f ; do
  if [[ -f "$f" ]]; then 
     echo "$f" >> /path/to/FilesFound.txt
  else
     echo "$f" >> /path/to/FilesNOTFound.txt
  fi
done < /path/to/ListOfAllFiles.txt
#/bin/bash
echo-n>/path/to/FilesFound.txt#重置为空文件
echo-n>/path/to/FilesNOTFound.txt#重置为空文件
而IFS=read-rf;做
如果[-f“$f”];然后
回显“$f”>>/path/to/FilesFound.txt
其他的
echo“$f”>>/path/to/FilesNOTFound.txt
fi
完成
感谢您迄今为止的帮助。当我这样做时,创建了两个文件(filesfund.txt和FilesNOTFound.txt),但是没有向它们写入任何内容…@Sheila:您确定
/path/to/ListOfAllFiles.txt
存在并包含您认为它的功能吗?(什么是
head/path/to/ListOfAllFiles.txt
print?)是的,它存在。我刚刚打开ListOfAllFiles.txt进行双重检查,它会打印每个文件的完整路径,每行一个文件。@Sheila:那么
head/path/to/ListOfAllFiles.txt是否打印您想要的内容?(确保路径正确,包括
/
;确保在正确的位置有大写和小写字母;等等)啊,是的-我意识到在使用“head”命令时,ListOfALlFiles.txt中的所有行都不在同一行。谢谢你的帮助!