.txt
我有一个文本文件,其中包含目录中存在的一堆文件的名称(不是完整路径名)。每个文件都有一个我想删除的另一个文件的(完整)路径。
假设我有一个名为“”的文件list.txt
,其中有文本文件的名称
pathtodelete1.txt
pathtodelete2.txt
something else that is the same as pathtodelete.txt
这些文件中的每一个都有一个存储在内部的路径,例如pathtodelete1.txt
包含/directory/randomfilename.txt
我尝试过多种方式组合xargs
但没有成功。
答案1
在有限的测试中,这对我有用:
cat list.txt | xargs cat | xargs rm
由于您使用它来删除文件,因此您可能需要首先使用非破坏性命令对其进行测试,例如
cat list.txt | xargs cat | xargs echo
答案2
while read TXT; do head -1 $TXT | xargs rm; done < list.txt
答案3
echo
此脚本应该可以执行您想要的操作。如果您不想看到有关其执行情况的报告,可以注释掉这些语句(或完全忽略它们)。
当您满意它会执行您想要的操作时,:
从语句的开头删除,然后它就会真正删除指定的文件。rm
#!/bin/bash
# Look in list.txt for files containing items to delete
while IFS= read -r file
do
echo "Considering $file" >&2
# Read the path to delete from the file
path="$(cat "$file" 2>/dev/null)"
# If it looks like a pathname try to delete it
if [[ "$path" =~ ^/ ]] && [[ -f "$path" ]]
then
echo "> $path" >&2
: rm -f "$path"
fi
done <list.txt