今天给大家科普一个Linux知识,怎么统计某个文件夹下,各个子文件夹中文件的数量。
比如说我现在有一个文件夹叫samples,samples里面又是七八个子文件夹,这七八个文件夹里面又是好几千个文件数据。现在就是要统计子文件夹中文件数据得具体数量
话不多说,直接上图
随便打开一个文件,数据长这样
现在只需要下面的代码就能解决samples文件夹下各个子文件夹中数据的数量:
find /path/to/directory -type d -exec sh -c 'echo -n "{}: " && find "{}" -maxdepth 1 -type f | wc -l' \;
其中
find /path/to/directory -type d
:这个命令会找到指定目录下的所有子目录。-exec sh -c '...' \;
:对每个找到的子目录执行一个shell命令。echo -n "{}: "
:打印子目录的路径,后面跟着一个冒号和空格,-n
选项防止echo
在末尾添加换行符。find "{}" -maxdepth 1 -type f
:在当前子目录中查找所有文件(不包括子目录中的文件)。| wc -l
:find
命令的输出通过管道传递给wc -l
,后者会计算行数,即文件数量。
这个命令会在每个子目录的名称后面打印出该子目录中文件的数量。
比如当我执行下述命令后,控制台就会直接显示samples文件夹中各个子文件夹中文件数据得数量
find /root/autodl-tmp/ViDAR/data/nuscenes/samples -type d -exec sh -c 'echo -n "{}: " && find "{}" -maxdepth 1 -type f | wc -l' \;
如果你想要将结果保存到一个文件中,可以这样做:
find /path/to/directory -type d -exec sh -c 'echo -n "{}: " && find "{}" -maxdepth 1 -type f | wc -l' \; > file_counts.txt
这将把结果输出到file_counts.txt
文件中。