首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Unix:如何删除文件中列出的文件

Unix:如何删除文件中列出的文件
EN

Stack Overflow用户
提问于 2011-02-28 21:13:08
回答 8查看 149K关注 0票数 108

我有一个包含要删除的文件掩码列表的长文本文件

示例:

代码语言:javascript
复制
/tmp/aaa.jpg
/var/www1/*
/var/www/qwerty.php

我需要删除它们。我试过rm cat 1.txt,它说列表太长了。

找到此命令,但当我检查列表中的文件夹时,其中一些文件夹仍具有文件xargs rm <1.txt手动rm调用可从此类文件夹中删除文件,因此权限没有问题。

EN

回答 8

Stack Overflow用户

发布于 2011-02-28 21:19:46

这不是很有效,但如果您需要glob模式(如/var/www/*),则可以工作。

代码语言:javascript
复制
for f in $(cat 1.txt) ; do 
  rm "$f"
done

如果您没有任何模式,并且确保文件中的路径不包含空格或其他奇怪的东西,则可以像这样使用xargs:

代码语言:javascript
复制
xargs rm < 1.txt
票数 135
EN

Stack Overflow用户

发布于 2016-06-01 20:08:30

您可以使用'\n‘将换行符定义为分隔符。

代码语言:javascript
复制
xargs -d '\n' rm < 1.txt

小心使用-rf,因为如果1.txt包含带空格的路径,它可能会删除您不想删除的内容。这就是为什么新行分隔符更安全的原因。

在BSD系统上,您可以使用-0选项来使用换行符作为分隔符,如下所示:

代码语言:javascript
复制
xargs -0 rm < 1.txt
票数 18
EN

Stack Overflow用户

发布于 2011-02-28 21:17:34

xargs -I{} sh -c 'rm "{}"' < 1.txt应该做你想做的事情。使用此命令时要小心,因为该文件中的一个错误条目可能会导致很多麻烦。

这个答案是在@tdavies指出原文没有做shell扩展之后编辑的。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5142429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档