我编译了很多C
程序,每个文件都有一个.gch
创建的。现在我不想要这些.gch
文件,所以我决定删除它们。但是rm
删除每个文件需要很多时间。那么有没有办法一次性删除具有相同扩展名的文件?
注意:我在 Ubuntu 14.04 中工作。我希望解决方案在shell
或 中terminal
。这个问题不是重复的,因为我只想使用rm
。
轻松使用扩展“*”:
rm /path-to-directory/*.gch
Run Code Online (Sandbox Code Playgroud)
这就是所谓的文件名扩展,它使用一些称为通配符的特殊字符。
假设您有一个包含文件的目录(文件、文件 0、文件 1、文件 01)
有些人知道通配符:
问号( ? ) 是一个特殊字符,它会导致 shell 生成文件名。它匹配现有文件名称中的任何单个字符。
例子:
ls file?
Run Code Online (Sandbox Code Playgroud)
外壳扩展“文件?” 参数并在工作目录中生成一个文件列表,这些文件的名称由“file”后跟任何单个字符组成。
然后输出将是 file0 和 file1
星号 (*)执行类似于问号的功能,但匹配文件名中任意数量的字符,包括零个字符。
现在命令的输出:
ls file*
Run Code Online (Sandbox Code Playgroud)
将是文件、文件 0、文件 1 和文件 01
[ ] 特殊字符 使 shell 匹配包含括号内单个字符的文件名。
例如命令的输出:
ls file[01]*
Run Code Online (Sandbox Code Playgroud)
将是:
文件0 文件1 文件01
这只是shell扩展的简单介绍,你可以阅读更多:
要一次性删除具有相同扩展名的文件,只需使用find
命令即可。
find /path/to/directory -type f -iname '*.gch' -delete
Run Code Online (Sandbox Code Playgroud)
-type
告诉find
您是否正在搜索files
或directories
,此处:
f
= 文件
d
= 目录
iname
告诉find
您正在查找的文件的名称。
注意:name
执行相同的操作,但iname
建议这样做,因为它会忽略情况,而name
不会。
-delete
删除这些文件