📅  最后修改于: 2023-12-03 15:20:07.839000             🧑  作者: Mango
在Linux系统中,我们经常需要查看文件夹中文件的数量,这个任务可以通过shell脚本来实现。
以下是一个示例shell脚本,它可以递归地查找指定目录下的所有子目录,并显示每个目录中的文件数:
#!/bin/bash
# 使用 find 命令查找目录下的所有文件,并统计文件数量
find_files() {
local dir="$1"
local count=$(find "$dir" -type f | wc -l)
echo "Directory '$dir' contains $count files."
}
# 递归地查找目录下的所有子目录,并调用 find_files() 函数
recurse_dirs() {
local start_dir="$1"
local dirs=$(find "$start_dir" -type d)
for dir in $dirs
do
find_files "$dir"
done
}
# 主函数,接受命令行参数并开始执行
main() {
# 检查命令行参数
if [[ $# -ne 1 ]]; then
echo "Usage: $0 <directory>"
exit 1
fi
# 获取目录
local dir="$1"
# 检查目录是否存在
if [[ ! -d "$dir" ]]; then
echo "Error: '$dir' is not a directory."
exit 1
fi
# 开始递归查找
recurse_dirs "$dir"
}
main "$@"
我们可以将这段代码保存为一个脚本,比如file_count.sh
,然后在命令行中运行它,并传递要查询的目录作为参数:
$ ./file_count.sh /path/to/directory
Directory '/path/to/directory' contains 10 files.
Directory '/path/to/directory/subdir1' contains 5 files.
Directory '/path/to/directory/subdir2' contains 3 files.
Directory '/path/to/directory/subdir3' contains 2 files.
代码解释:
find_files
,接受一个目录作为参数,使用find
命令查找该目录下的所有文件,并使用wc -l
命令统计文件数量。最后输出结果。recurse_dirs
,接受一个起始目录作为参数,使用find
命令递归查找该目录下的所有子目录,并调用find_files
函数查询每个目录的文件数量。main
,接受一个命令行参数,检查参数个数和目录是否存在,然后调用recurse_dirs
函数开始递归查找。main
函数,并传递命令行参数。这个脚本可以帮助我们快速地查看指定目录下每个子目录中文件的数量,方便我们管理和维护文件系统。