如何在Linux中删除以某个字符串开头的所有文件

Ach*_*ika 65 linux bash

我需要NAME在目录树中找到所有以该名称开头的文件,并使用一个 shell 命令删除所有这些文件。

Pau*_*l R 80

删除当前目录及其子目录中文件名以“foo”开头的所有文件:

$ find . -type f -name foo\* -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

注意:谨慎使用 - 先备份 - 也先进行空运行,例如

$ find . -type f -name foo\*
Run Code Online (Sandbox Code Playgroud)

只会告诉您将被删除的文件的名称。

  • 我不得不删除超过 200 万个文件并遇到麻烦,`find . -type f -name foo\* -delete` 成功了 (8认同)

小智 53

我已经尝试过这种方式,它对我有用,请尝试以下命令。

rm -rf Example*
Run Code Online (Sandbox Code Playgroud)

这里的“示例”是所有文件通用的文本。

  • 不知道为什么这不是投票最高的答案...... (8认同)

小智 26

要删除名称具有名称的所有文件,您可以使用它:

find  . -name 'name*' -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)


小智 11

您可以使用find

find . -name "name*" -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)


小智 5

find . -name 'foo'* -type f -delete似乎是最简单的答案。

您可以在不带-delete标志的情况下运行此命令,以查看哪些文件将被删除。

  • 正如 @Linas `find 所指出的。 -type f -name foo\* -delete` 适用于超过 1M+ 的文件,其他解决方案因“参数列表太长”而失败 (2认同)