如何从文件列表

时间:2016-01-05 20:04:07

标签: linux bash shell sh

我有一个包含文件列表的文本文件a.txt

photo/a.jpg
photo/b.jpg
photo/c.jpg
etc

我想获得一个不存在的文件列表。

2 个答案:

答案 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写入文件。