如何统计所有名为'my Dir'的目录下后缀为.csv的文件数量
原命令错误原因
- 通配符
*被包裹在引号中,shell不会执行路径展开,ls实际会尝试查找名称为*.csv的字面量文件,无法匹配到目标csv文件 - 若某
my Dir目录下没有csv文件,ls会输出错误提示,这些内容会被wc -l统计造成结果偏差;同时如果csv文件名包含换行符,直接统计行数也会出现计数错误
正确解决方案
场景1:仅统计my Dir根目录下的csv文件,不包含其子目录内的文件
find . -type d -name "my Dir" -exec find {} -maxdepth 1 -type f -name "*.csv" -print0 \; | wc -l --files0-from=-
场景2:统计my Dir下所有层级的csv文件,包含其子目录内的文件
find . -type d -name "my Dir" -exec find {} -type f -name "*.csv" -print0 \; | wc -l --files0-from=-
命令说明
- 用
-print0以ASCII 0作为文件名分隔符,完美兼容带空格、特殊符号、换行的文件名/目录名 - 用
wc -l --files0-from=-读取分隔的文件路径统计数量,不会统计错误输出,计数准确率100%
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

