
我正在使用此脚本来计算目录和子目录中的文件数量:
for i in $(find . -type d) ; do
printf "$i %s\t" ;
( find $i -type f | wc -l ) ;
done
这个脚本运行良好。我真正想要它做的是只打印包含超过 31 个文件的目录。
答案1
尝试:
find . -type d -exec sh -c '[ $(find "$1" -type f | wc -l) -gt 31 ]' _ {} \; -print
我建议对-maxdepth
第二个使用限制find
,否则您可能会发现一些令人惊讶的结果。该命令不适用于包含换行符的名称。
答案2
更换线路:
( find $i -type f | wc -l ) ;
有了这个:
FILES=$( find $i -type f | wc -l );
然后你可以要求它:
if [ "$FILES" -gt 31 ] ; then
答案3
这应该使用-gt
:
for i in $(find . -type d) ; do
NUM=$( find $i -type f | wc -l );
if [[ $NUM -gt 31 ]]; then
echo "$i $NUM" ;
fi
done
答案4
解决方案使用巴什的数组:
x=( * )
((${#x[@]} > 31)) && printf '%s\n' *