多次使用文件内容作为参数

多次使用文件内容作为参数

.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

相关内容