如何使用 rm 一次性删除具有相同扩展名的文件?

如何使用 rm 一次性删除具有相同扩展名的文件?

我曾编译过许多C程序,每个文件都.gch创建了一个。现在我不想要这些.gch文件了,所以我决定删除它们。但删除每个文件会花费很多时间rm。那么有没有办法一次性删除具有相同扩展名的文件呢?

笔记:我在 Ubuntu 14.04 中工作。我希望解决方案在shell或中terminal。该问题不是重复的,因为我只想使用rm

答案1

轻松使用扩展“*”:

rm /path-to-directory/*.gch

这就是所谓的文件名扩展,它使用一些称为通配符的特殊字符。

假设你有一个包含文件(file,file0,file1,file01)的目录

有些人知道通配符:

问号) 是使 shell 生成文件名的特殊字符。它与现有文件名称中的任何单个字符匹配。

例子:

ls file?

shell 扩展“文件?”参数并在工作目录中生成名称由“文件”后跟任意单个字符组成的文件列表。

那么输出将是 file0 和 file1

星号 (*)执行与问号类似的功能,但匹配文件名中的任意数量的字符,包括零个字符。

现在命令的输出:

ls file*

将是文件、file0、file1 以及 file01

[ ] 特殊字符 导致 shell 匹配包含括号内各个字符的文件名。

例如该命令的输出:

ls file[01]*

将会:

文件0 文件1 文件01

这只是对 shell 扩展的简单介绍,您可以阅读更多内容:

答案2

要一次性删除具有相同扩展名的文件,只需使用find命令。

find /path/to/directory -type f -iname '*.gch' -delete
  • -type告诉find您是否正在搜索filesdirectories,此处:

    f= 文件

    d= 目录

  • iname告诉find您正在寻找的文件的名称。

    笔记:name做同样的事情但是iname被推荐因为它忽略大小写而name没有。

  • -delete删除这些文件

答案3

只需在终端(shell)中输入以下命令

rm -rf  /path/to/files/*.<extension>

请谨慎使用 -f 参数。它不会在删除前发出警告。

答案4

如果您使用的是 C 和 Makefile,您还可以默认创建 .PHONY 配方目标并 rm,然后添加从干净的源目录中删除的副产品“cruft”文件。您仍然使用通配符 * 标记。

make clean

例如

   .PHONY clean


    clean:  
         rm -f *.gch  *.o *.temp *.log

那么你在消除垃圾方面的生产力就成倍提高了。

相关内容