在 Linux 上递归删除具有特定扩展名的文件在 Linux 上递归删除具有特定扩展名的文件在 Linux 上递归删除具有特定扩展名的文件在 Linux 上递归删除具有特定扩展名的文件
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

在 Linux 上递归删除具有特定扩展名的文件

介绍

在 Linux 上,有多种方法可以递归删除目录及其子目录中具有特定扩展名 (.xyz) 的文件。递归删除文件意味着从目录及其所有子目录中删除具有指定扩展名的所有文件。如果手动完成此操作可能会花费很长时间,尤其是对于大量文件。在本文中,我们将了解在 Linux 上递归删除具有特定扩展名的文件的三种方法。

使用 rm 命令

rm命令是Linux中的基本文件操作工具,用于删除文件和目录。它可以与其他命令结合使用以获得所需的结果。要递归地删除目录及其子目录中具有特定扩展名的文件,我们可以使用以下命令 -

$ find /path/to/dir -name "*.extension" -type f -delete

这里,/path/to/dir是要删除文件的目录路径,*.extension是删除文件的模式,-type f指定只删除文件,-delete是删除files文件的操作。

例如,要删除“/home/user/documents”目录及其子目录中的所有“.txt”文件,命令为 -

$ find /home/user/documents -name "*.txt" -type f -delete

将 find 命令与 rm 命令一起使用

find命令是Linux中更高级的文件操作工具,用于查找特定位置的文件和目录。它可以与其他命令结合使用以获得所需的结果。

要递归删除目录及其子目录中具有特定扩展名的文件,我们可以使用以下命令 -

$ find /path/to/dir -name "*.extension" -type f -exec rm -f {} \;

这里,“/path/to/dir”是要删除文件的目录路径,*.extension是删除文件的模式,-type f指定只删除文件,-exec用于执行命令,rm -f是删除文件的命令,使用-f选项强制删除而不警告。 {} 是正在处理的文件名称的占位符,命令末尾的 \; 用于终止命令执行。

例如,要从“/home/user/documents”目录及其子目录中删除所有“.txt”文件,命令为 -

$ find /home/user/documents -name "*.txt" -type f -exec rm -f {} \;

使用 for 循环

递归删除目录及其子目录中具有特定扩展名的文件的另一种方法是结合使用 for 循环和 find 命令。

$ for file in $(find /path/to/dir -name "*.extension"); do rm -f "$file"; done

这里,/path/to/dir是要删除文件的目录的路径,*.extension是删除文件的模式,“rm -f”是删除文件的命令,带有“-f”选项以强制取消,恕不另行通知。 “$ (find...)”命令用于查找文件,for 循环用于迭代每个文件并将其删除。例如,要删除“/home/user/documents”目录及其子目录中的所有“.txt”文件,命令为 -

$ for file in $(find /home/user/documents -name "*.txt"); do rm -f "$file"; done

请注意,此方法的效率低于前两种方法,因为它需要额外的处理来构建文件列表并为每个文件运行 rm 命令。但是,在其他方法可能不起作用的某些情况下,它可能很有用。

直接使用find命令

另一种递归删除目录及其子目录中具有特定扩展名的文件的方法是直接使用带有“-delete”选项的 find 命令。

$ find /path/to/dir -name "*.extension" -type f -delete

这里,/path/to/dir是要删除文件的目录路径,*.extension是删除文件的模式,-type f 指定仅搜索文件(不搜索目录),-delete 是删除文件的选项。例如,要从当前目录及其子目录中删除所有 .bak 文件,命令为 -

$ find . -name "*.bak" -type f -delete

请注意,如果不小心使用,此方法可能会很危险,因为它会立即删除文件而不发出警告。在使用此命令之前,建议您运行以下命令来查看将删除的文件列表 -

$ find . -name "*.bak" -type f

需要注意的是,‘-delete’选项必须是命令的最后一个参数。如果将其放置在“-name *.bak”参数之前,它将删除所有内容。因此,请谨慎使用此方法,并确保在使用之前备份所有重要数据。

结论

在本文中,我们讨论在 Linux 上递归删除具有特定扩展名的文件的三种方法:使用 rm 命令、使用 find 命令以及使用 for 与 rm 命令结合使用循环。每种方法都有自己的语法,可以用来实现所需的结果。选择最适合您需求的方法,并使用它来节省在 Linux 上删除文件的时间和精力。请务必记住在尝试删除文件之前备份数据,尤其是在使用通配符匹配多个文件时。

©2015-2025 艾丽卡 support@alaica.com