我有一个包含要删除的文件掩码列表的长文本文件
示例:
/tmp/aaa.jpg
/var/www1/*
/var/www/qwerty.php
我需要删除它们。我试过rm cat 1.txt
,它说列表太长了。
找到此命令,但当我检查列表中的文件夹时,其中一些文件夹仍具有文件xargs rm <1.txt
手动rm调用可从此类文件夹中删除文件,因此权限没有问题。
发布于 2011-02-28 21:19:46
这不是很有效,但如果您需要glob模式(如/var/www/*),则可以工作。
for f in $(cat 1.txt) ; do
rm "$f"
done
如果您没有任何模式,并且确保文件中的路径不包含空格或其他奇怪的东西,则可以像这样使用xargs:
xargs rm < 1.txt
发布于 2016-06-01 20:08:30
您可以使用'\n‘将换行符定义为分隔符。
xargs -d '\n' rm < 1.txt
小心使用-rf,因为如果1.txt包含带空格的路径,它可能会删除您不想删除的内容。这就是为什么新行分隔符更安全的原因。
在BSD系统上,您可以使用-0选项来使用换行符作为分隔符,如下所示:
xargs -0 rm < 1.txt
发布于 2011-02-28 21:17:34
xargs -I{} sh -c 'rm "{}"' < 1.txt
应该做你想做的事情。使用此命令时要小心,因为该文件中的一个错误条目可能会导致很多麻烦。
这个答案是在@tdavies指出原文没有做shell扩展之后编辑的。
https://stackoverflow.com/questions/5142429
复制相似问题