2012-10-02 12:18:00 +0000 2012-10-02 12:18:00 +0000
39
39
Advertisement

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

Advertisement

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

Advertisement
Advertisement

答案 (7)

68
68
68
2012-10-02 12:19:23 +0000

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

$ find . -type f -name foo\* -exec rm {} \;

NB:谨慎使用–先备份–也要先做一次模拟运行,例如:

$ find . -type f -name foo\*

只会告诉你要删除的文件名称。

29
29
29
2016-07-28 10:51:24 +0000

我已经尝试过这种方式,它对我来说是有效的,请尝试以下命令。

rm -rf Example*

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

11
Advertisement
11
11
2012-10-02 12:22:38 +0000
Advertisement

你可以使用find

find . -name "name*" -exec rm {} \;
3
3
3
2017-02-24 03:17:48 +0000

globstar选项 (用shopt -s globstar启用):

rm -f **/NAME*

**/扩展为./*/*/*/*/*/*/等。如果你有一个以NAME开头的_目录名,命令会抱怨rm不能删除目录,但仅此而已。

注意,如果 glob 匹配了很多文件,这可能会遇到命令行长度的限制。

另外,尽量少调用rm,但不受任何命令行长度限制。

find . -type f -name 'NAME*' -exec rm -f {} +

(注意用+代替\;来关闭-exec语句。)

3
Advertisement
3
3
2012-10-02 12:48:10 +0000
Advertisement

要删除所有带名字的文件,可以使用:

find . -name 'name*' -exec rm {} \;
```。
2
2
2
2018-08-27 16:28:09 +0000

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

你可以在不使用-delete标志的情况下运行这个程序,看看哪些文件会被删除。

-1
Advertisement
-1
-1
2015-03-30 06:04:34 +0000
Advertisement

搜索文件/文件夹的 “Inode "号,然后使用inode号删除。下面是一个例子:

ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p

find . -inum 3407873 -exec rm -rf {} \;
```。
Advertisement

相关问题

6
10
11
5
2
Advertisement
Advertisement