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

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

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

答案1

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

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

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


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

答案2

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

rm *text*

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

答案3

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

在父目录中运行此命令。这将删除名称中包含数字、后跟“x”字符和另一个数字的所有文件。

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

答案4

我发现,如果您想删除以特定字母开头的目录,您可以使用下一个命令:

假设您创建了下一个文件夹:

  • Baka
  • baka
  • Aka
rm -rf B* b*

这将删除所有以这些字母(大写 B 和小写 b)开头的目录。

执行此命令后,您将只保留名为 的文件夹。您可以使用列出当前目录中剩余的文件夹来Aka检查它。ls

相关内容