我有一个包含文件列表的文本文件a.txt
:
photo/a.jpg
photo/b.jpg
photo/c.jpg
etc
我想获得一个不存在的文件列表。
答案 0 :(得分:4)
您可以使用:
xargs -I % bash -c '[[ ! -e $1 ]] && echo "$1"' _ % < a.txt > b.txt
xargs
将为bash -c
中的每一行投放a.txt
。 [[ ! -e $1 ]]
将检查每个条目是否不存在。
答案 1 :(得分:2)
不需要涉及cat
,也不需要为文件中的每一行调用单独的shell;一个简单的while read
循环就足够了:
while read -r file
do
[ -e "$file" ] || echo "$file"
done < a.txt
逐一阅读每一行。测试每个文件是否存在,如果不存在,则打印其名称。
正如输入使用<
传递给循环一样,循环的输出可以使用> out.txt
写入文件。