【发布时间】:2016-09-28 10:11:10
【问题描述】:
假设有一个目录 'foo' 包含几个文件:
ls foo:
1.aa 2.bb 3.aa 4.cc
现在在 bash 脚本中,我想计算 'foo' 中具有特定后缀的文件的数量,并显示它们,例如:
SUFF='aa'
FILES=`ls -1 *."$SUFF" foo`
COUNT=`echo $FILES | wc -l`
echo "$COUNT files have suffix $SUFF, they are: $FILES"
问题是:如果SUFF='dd',$COUNT也等于1。 google了一下,发现原因是当SUFF='dd',$FILES是一个空字符串,并不是程序真正的null输出,wc会认为有一行。 NUL 输出只能通过管道传递。所以一种解决方案是:
COUNT=`ls -1 *."$SUFF" foo | wc -l`
但这会导致ls 命令被执行两次。所以我的问题是:有没有更优雅的方法来实现这一点?
【问题讨论】:
-
文件名以
foo结尾?你能给一个这样的样本名称吗?你也想在子目录中递归搜索吗? -
foo 是目录。文件名以 aa,bb,cc 结尾。不需要搜索子目录。