随笔 - 69,  文章 - 3,  评论 - 8,  阅读 - 49079

需求:用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 文件格式错误。

posted on   vmsky  阅读(114)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示