删除所有文件名包含特定字符串的文件?


22

我更改了wordpress主题。较旧的服务器在服务器上创建了很多映像。我的新主题不需要它们,因此我想删除所有主题。我怎样才能做到这一点?

例如:
默认图像:12_angry_men_lone_holdout.jpg

我要删除:

12_angry_men_lone_holdout-290x166.jpg
12_angry_men_lone_holdout-700x300.jpg 
12_angry_men_lone_holdout-50x50.jpg

使用Digitalocean,Ubuntu 13.10。


在终端上键入,man rm以查看rm命令的手册页。
hmayag 2014年


这些图像看起来是从上传到WorldPress媒体库的图像自动创建的缩略图。如果是这样,则不要在服务器上的终端中删除这些文件。打开您的WordPress管理页面,打开“设置”>“媒体”。在此设置所需的缩略图尺寸。然后安装插件“ 重新生成缩略图” 并重新创建所有缩略图(可能需要几分钟,具体取决于媒体库中图像的数量)。
鲍勃

Answers:


22

如果它们在同一文件夹中,请使用*通配符来实现:

rm *text*

text文件名包含的字符串在哪里。


其实这不是一个目录,但我现在可以一一完成。谢谢!
Ibrahim Mumcu 2014年

27

使用find递归地查找和使用他们的名字“文本”删除文件:

find -type f -name '*text*' -delete

您可能还希望在find -type f -name '*text*'-delete之前运行(不带),以确保您不会删除任何不打算删除的文件。


实际上,您可以在搜索字符串中的任何位置放置通配符,因此-name '12_angry_men_lone_holdout-*.jpg'可能更适合您的情况。


是否不需要代表文件路径
Avinash Raj

@AvinashRaj如果第一个参数不是路径,请find搜索当前工作目录。
2014年

有人放了。在找到要在当前工作目录中搜索之后。
Avinash Raj 2014年

1
@AvinashRaj那将是多余的。按照man find如果未给出路径,则使用当前目录。
2014年

@AvinashRaj证明POSIX规范find实际上确实需要路径。默认为.GNU find添加的修改。如果这是Unix&Linux,我会在答案中加上它,但是由于默认情况下Ubuntu附带了GNU find,所以我不想让新来者感到不必要的混乱。;)
n.st

1

尝试这个:

rm -rf 12_angry_men_lone_holdout-*

这将keep 12_angry_men_lone_holdout.jpg删除尺寸为(290x166)的文件

而且请记住

rm -rf 12_angry_men_lone_holdout.*

也会删除您需要的默认文件。


0
find . -type f -name '*[0-9]x[0-9]*' -delete

在父目录中运行它。这将删除所有文件名中带有数字后跟“ x”字符和其他数字的文件。

仍然要小心,如果原始文件的名称包含上述格式(不太可能),这可能也会删除原始文件。首先运行不带“ -delete”的文件,以查看是否有任何具有该名称的文件。如果是这样,您只需要找到一个更具限制性的模式。

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.