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

我改变了我的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。

如果它们在同一个文件夹中,则使用* wildcard来实现:

 rm *text* 

其中text是文件名包含的字符串。

使用find递归查找和删除名称中带有“text”的文件:

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

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


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

试试这个:

 rm -rf 12_angry_men_lone_holdout-* 

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

请记住

 rm -rf 12_angry_men_lone_holdout.* 

将删除你需要的默认文件。

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

在父目录中运行它。 这将删除所有具有数字后跟“x”字符的文件,后跟其名称中的另一个数字。

还是要小心,这可能会删除原始文件,如果他们的名字包含上述模式(不太可能)。 首先运行它而不使用’-delete’来查看是否有任何具有此名称的文件。 如果是这种情况,您只需要找到更严格的模式。