Chatgpt 帮忙写的脚本_用shell 写一段代码,要求获取指定路径下所有的文件夹,并统计每个文件夹所包含的文件个数,将文件路径, 包含的文件数 输出到指定路径的CSV 格式文件中

发布时间 2023-04-19 23:07:50作者: vmsky

需求:用shell 写一段代码,要求获取指定路径下所有的文件夹,并统计每个文件夹所包含的文件个数,将文件路径, 包含的文件数 输出到指定路径的CSV 格式文件中
以下是使用 Shell 实现获取指定路径下所有文件夹,并统计每个文件夹中包含的文件个数,并将结果导出到 CSV 文件的示例代码:

点击查看代码
shell
# 设置源目录和目标文件路径
source_directory="/path/to/source/dir"
target_file="/path/to/output/file.csv"

# 获取每个子目录的路径和其中文件的数量
echo "文件夹路径,文件数量" > "$target_file"  # 写入表头
find "$source_directory" -type d -not -path '*/\.*' -print0 | while read -d $'\0' directory
do
    count=$(find "$directory" -maxdepth 1 -type f | wc -l)
    echo "\"${directory}\",$count" >> "$target_file"
done
在上述代码中,首先设置了源目录和目标文件路径。随后通过 find 命令遍历 $source_directory 目录及其子目录下的所有文件夹。

其中,-type d 表示只找文件夹,-not -path '/.' 表示排除掉隐藏文件夹(即以点号开头的文件夹),-print0 表示将输出结果用 \0 分隔。遍历结果会按照 \0 的位置进行分割,从而处理含空格等特殊字符的路径名。

对于每个子目录,使用 find 命令查找该目录下的所有文件(不包括子目录)并使用 wc -l 统计文件数量,并将结果存储在 $count 变量中。最后,使用 echo 将目录路径和文件数量拼接为一行字符串,并使用 >> 将输出结果添加到目标文件中(在第一行之前)。

需要注意的是,上述代码中使用了双引号将目录路径括起来,这是为了防止路径名中出现逗号等分隔符导致 CSV 文件格式错误。