我有一个.txt文件,每行都有一个不同的文件位置,例如。
file1.zip
file2.zip
file3.zip
如何打开该文件,遍历每一行并在每一行上使用rm -f文件名?
此外,如果文件不存在(已被删除),将删除它会抛出错误,如果是这样,我该如何避免这种情况?
编辑:文件名中可能包含空格,因此也需要照顾。
答案 0 :(得分:1)
您可以使用for
循环cat
来遍历这些行:
IFS=$'\n'; \
for file in `cat list.txt`; do \
if [ -f $file ]; then \
rm -f "$file"; \
fi; \
done
if [ -f $file ]
将检查文件是否存在并且是否是常规文件(不是目录)。如果检查失败,它将跳过它。
顶部的IFS=$'\n'
会将分隔符设置为仅限换行符;这将允许您处理具有空格的文件。
答案 1 :(得分:0)
xargs -n1 echo < test.txt
用rm -f或任何其他命令替换'echo'。您也可以使用cat test.txt |
'man xargs'获取更多信息。