📌  相关文章
📜  windows 列出子目录中的所有文件 - Shell-Bash (1)

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

Windows 列出子目录中的所有文件 - Shell-Bash

在 Windows 系统下,可以使用批处理文件或 Powershell 脚本来列出子目录中的所有文件,这里我们使用 Shell-Bash 脚本来实现这个功能。

递归列出子目录的脚本
#!/bin/bash

# 递归列出指定目录中的所有文件和目录
function list_files() {
    local dir="$1"
    local level=${2:-0}

    # 判断目录是否存在
    if [ ! -d "$dir" ]; then
        echo "$dir is not a directory"
        return
    fi

    # 列出子目录中的所有文件和目录
    local file
    for file in "$dir"/*; do
        # 打印文件信息
        printf "%*s%s\n" $level "" "${file##*/}"

        # 如果是目录,则递归列出子目录中的文件
        if [ -d "$file" ]; then
            list_files "$file" $((level+4))
        fi
    done
}

# 调用函数列出指定目录中的所有文件和目录
list_files .  # 当前目录

代码解释:

  • list_files() 函数用来递归列出指定目录中的所有文件和目录,参数 $1 表示目录路径,参数 $2 表示缩进级别,默认为 0。
  • if [ ! -d "$dir" ]; then 判断目录是否存在。
  • $level 表示缩进级别,每次递归调用增加 4。
  • ${file##*/} 获取文件名(去掉路径)。
  • [ -d "$file" ] 判断是否是目录。
运行结果

递归列出当前目录(包括子目录)的所有文件和目录:

README.md
list_files.sh
subdir1
    file11.txt
    file12.txt
subdir2
    subdir21
        file211.txt
        file212.txt
    file22.txt
总结

通过 Shell-Bash 脚本递归列出子目录中的所有文件,可以省去手动进入子目录并列出文件的麻烦。该脚本可以应用于文件操作、备份和清理等常见场景。