我有一个文本文件(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
我做错了什么?
答案 0 :(得分:1)
你最大的问题是,每次通过循环都会覆盖/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