如何统计单行中用&&分隔的多个ls -l命令输出的总文件数?
问题原因
管道符默认仅作用于其前面紧邻的单个命令,你之前的写法里只有最后一个ls -l *.md的输出进入了统计管道,前两个ls命令的输出直接打印到终端,自然无法得到总文件数。
解决方法
写法1:保留原有多ls命令逻辑
将所有需要统计输出的命令用大括号包裹为一个代码块,合并所有输出后再统一接管道统计:
{ ls -l *.xml && ls -l *.json && ls -l *.md; } 2>/dev/null | egrep -c '^-'
注意语法规则:大括号和内部命令之间需要保留空格,最后一个命令末尾需要加英文分号。2>/dev/null用于过滤某类后缀无匹配文件时ls输出的报错信息,避免干扰统计结果。
写法2:更简洁的简化写法
无需拆分多个ls命令,直接将所有需要匹配的通配符传入同一个ls命令即可,效果完全一致:
ls -l *.xml *.json *.md 2>/dev/null | egrep -c '^-'
内容的提问来源于stack exchange,提问作者RetroCoder
相关产品推荐
相关产品推荐

