如何解析文件的文件名并以交互方式删除

How to parse file for filenames and remove interactively

我想读取文件并解析文件名并将其删除。在我的例子中,这意味着删除文件中每一行的第一个选项卡之后的所有内容以获取文件名,然后在文件上调用 rm -i

这是我目前所拥有的,但它只是在没有提示的情况下将它们全部删除...如果我将 -i 添加到 xargs rm,它会给我一堵文字墙,让我无法选择 y/n

while IFS=' ' read -r line; do
  #echo ${line%*}
  sed -e 's/\t.*$//' | xargs rm
done < 

您可以避免rm -i并使用xargs -p提示使用每个要删除的文件:

cut -f1 file | xargs -n1 -p rm

问题是 rm -i 在 stdin 上请求 yes/no。您重定向到 while 循环并通过管道传输到 xargs,这两者都将覆盖 rm -i.

的标准输入

您可以重写以避免 xargs 并为您的循环使用不同的 FD:

while IFS=$'\t' read -u 3 -r file _ 
do
  rm -i "$file"
done 3< yourfile.txt