📌  相关文章
📜  递归删除具有特定扩展名的文件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:12:22.327000             🧑  作者: Mango

递归删除具有特定扩展名的文件 - Shell-Bash

当我们需要删除一个目录下所有拥有特定扩展名的文件时,使用递归删除就是最好的选择。

实现思路

我们可以使用递归的方式,查找并删除目录下所有拥有特定扩展名的文件。

具体步骤如下:

  1. 输入要删除的文件扩展名;
  2. 定义递归删除函数;
  3. 在函数内部,使用 find 命令查找该目录下所有拥有特定扩展名的文件;
  4. 对于查找到的每个文件,使用 rm 命令删除;
  5. 对于查找到的每个目录,递归调用该函数。
代码实现
#!/bin/bash

# 输入要删除的文件扩展名
echo "请输入要删除的文件扩展名(例如 .txt):"
read extension

# 定义递归删除函数
function remove_files(){
    for file in $(find $1 -name "*$extension"); do
        if [ -f "$file" ]; then
            rm $file
            echo "已删除文件: $file"
        elif [ -d "$file" ]; then
            remove_files $file
        fi
    done
}

# 调用递归删除函数
echo "开始删除 $extension 文件……"
remove_files .
echo "已完成删除 $extension 文件!"
代码说明
  1. read extension:读取用户输入的文件扩展名;
  2. function remove_files():定义递归删除函数;
  3. find $1 -name "*$extension":查找当前目录下所有拥有指定扩展名的文件;
  4. if [ -f "$file" ]:判断查找到的文件是否为普通文件;
  5. elif [ -d "$file" ]:判断查找到的文件是否为目录;
  6. remove_files $file:如果查找到的文件为目录,则递归调用该函数;
  7. echo:输出删除文件的信息。
总结

使用递归删除可以方便地删除一个目录下所有拥有特定扩展名的文件。在实际项目中,经常需要删除一些无用的文件,这种方式可以提高效率,减少手动操作的繁琐。