计算目录下有多有个文件(不包子目录)的最简方法

ls -l | tail +2 | grep -v '^d' | wc -l      
并不要求是目录还是文件
达到ls -1 | wc -l 即可      
建议给出详细点的注释      
[QUOTE=oraclemis]ls -l | tail +2 | grep -v '^d' | wc -l[/QUOTE]
这样的速度很慢, 超过10000行的记录用 grep 处理会造成瓶颈      
翻一下老帖子,用c的思维:
i=0;
for file in *
do
i=$(($i+1))
done;
echo $i      
果然是老帖
但老帖能翻不不少毛病。。。

如果空文件夹
上面好几个方法有都结果为1的错误
包括我自己的

如果 * 不能被替换成文件名
那么 * == '*'
计数器为 1


另外的 ls
我记得有个长度限制的
如果文件数量过多好像就会报错
find应该就没这个问题      
哦。。。
如果不带*并不报错
复制内容到剪贴板
代码:
[0 No.514 huanlf@huanlf-desktop ~]$ ls -1 /var/lib/dpkg/info/*
bash: /bin/ls: Argument list too long

[126 No.515 huanlf@huanlf-desktop ~]$
      
如果文件夹为空,确实做出来为1,但是下面怎么回事?
[QUOTE=li-jiahuan]
如果 * 不能被替换成文件名
那么 * == '*'
计数器为 1
[/QUOTE]
复制内容到剪贴板
代码:
[fitren@fitren temp]$ ls
*  1
[fitren@fitren temp]$ i=0;for file in *;do i=$(($i+1));done;echo $i;
2
[fitren@fitren temp]$
复制内容到剪贴板
代码:
[fitren@fitren fitren]$ ls -l tmp/tmp/tmp/tmp/tmp/tmp/tmp/tmp/tmp/adsfasdfasdfasdfa/*
-rw-rw-r--  1 fitren fitren 9  1月17 10:55 tmp/tmp/tmp/tmp/tmp/tmp/tmp/tmp/tmp/adsfasdfasdfasdfa/*
-rw-rw-r--  1 fitren fitren 0  1月17 10:55 tmp/tmp/tmp/tmp/tmp/tmp/tmp/tmp/tmp/adsfasdfasdfasdfa/tmp.txt
[fitren@fitren fitren]$ i=0;for file in tmp/tmp/tmp/tmp/tmp/tmp/tmp/tmp/tmp/adsfasdfasdfasdfa/* ;do i=$(($i+1));done;echo $i;
2
[root@fitren fitren]$
      
两个文件
i + 1 两次
结果为2不是很正常吗?

以 ‘*’做文件名
在这里也没什么特殊的啊