📅  最后修改于: 2023-12-03 15:05:57.507000             🧑  作者: Mango
在 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 脚本递归列出子目录中的所有文件,可以省去手动进入子目录并列出文件的麻烦。该脚本可以应用于文件操作、备份和清理等常见场景。