使用文本文件列表简单删除文件将不起作用


1

我必须删除remove.txt指定的文件 看起来像这样:

    img_8138.dng.jpg
    img_8140.dng.jpg
    img_8141.dng.jpg
    img_8143.dng.jpg

我从网上尝试了几条建议:

while read file; do rm "$file"; done < remove.txt

xargs -rd '\n' --arg-file=remove.txt rm -i --

rm $(cat /Volumes/space1/remove.txt)

xargs rm <remove.txt 等等

这些文件位于当前目录中的一些 将被删除(remove.txt)。如果我使用rm,删除工作 在当前目录中。但是使用列表我得到了 每次都出错。

rm: cannot remove ‘img_8147.dng.jpg’: No such file or directory

有什么想法会出错吗?


文件中的行是包含前导或尾随空格字符吗?
nohillside

@patrix没有前导或尾随空格字符。
johne

1
你可以运行你的第一个命令( while 循环) do echo rm "$file"; done 然后只需将其中一个打印的命令复制/粘贴到shell中?
nohillside

Answers:


1

预计会出现这种错误。没有通向包含其中文件的目录的完整路径 remove.txt。因此,当你跑步 rm $(cat /Volumes/space1/remove.txt) 在这些文件所在的目录之外,您会收到该错误。

简单地运行:

cd /Volumes/space1; rm `cat remove.txt`

或修改 remove.txt 文件包含完整路径。


在我的帖子中,我忽略了提到我也尝试过绝对路径。我检查了patrix关于额外空间的建议,没有运气。然后我尝试了你的版本和我昨天用过的其他版本。所有的尝试都导致了这个错误。
johne

“在我的帖子里,我忽略了一提,我也尝试过绝对的路径。”您尝试这种方法时使用了什么方法?我建议修改原始问题以包含此信息以便澄清。干杯。
njboot

得到它了!它现在有效。谢谢大家的帮助。
johne
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.