📌  相关文章
📜  shell 显示每个文件夹中的文件数 - Shell-Bash (1)

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

Shell-Bash:以'shell 显示每个文件夹中的文件数

在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.

代码解释:

  • 第1行:shebang,指定脚本使用的解释器为bash。
  • 第4-9行:定义函数find_files,接受一个目录作为参数,使用find命令查找该目录下的所有文件,并使用wc -l命令统计文件数量。最后输出结果。
  • 第11-17行:定义函数recurse_dirs,接受一个起始目录作为参数,使用find命令递归查找该目录下的所有子目录,并调用find_files函数查询每个目录的文件数量。
  • 第19-32行:定义主函数main,接受一个命令行参数,检查参数个数和目录是否存在,然后调用recurse_dirs函数开始递归查找。
  • 第34行:调用main函数,并传递命令行参数。

这个脚本可以帮助我们快速地查看指定目录下每个子目录中文件的数量,方便我们管理和维护文件系统。