linux – “ls |的结果” wc -l“与实际文件数不匹配

参见英文答案 > How to use wc and piping to find how many files and directories are in a certain directory?                                    4个
我需要计算文件夹下的文件数,并使用以下命令.

cd testfolder
bash-4.1$ls | wc -l
6

实际上,此文件夹下只有五个文件,

bash-4.1$ls
total 44
-rw-r--r-- 1 comp 11595 Sep  4 22:51 30.xls.txt
-rw-r--r-- 1 comp 14492 Sep  4 22:51 A.pdf.txt
-rw-r--r-- 1 comp  8160 Sep  4 22:51 comparison.docx.txt
-rw-r--r-- 1 comp   903 Sep  4 22:51 Survey.pdf.txt
-rw-r--r-- 1 comp  1206 Sep  4 22:51 Steam Table.xls.txt

它看起来像ls | wc -l甚至将总数44计为文件,这是不正确的.

解决方法:

wc是char,word和行计数器,而不是文件计数器.

作为程序员/脚本编写者,您负责使其计算您想要的数量并相应地调整计算.

在您的情况下,您可以执行以下操作:

echo $((`ls|wc -l`-1))

最后请注意,你的ls可能是一个别名,因为它给出了一个很长的列表,这不是没有参数的普通ls.因此,引用ls的完整路径(通常是/ bin / ls)以避免混淆可能是个好主意.

上一篇:【汇编语言与计算机系统结构笔记03】浮点数的计算机表示,IEEE 754,舍入(rounding),C语言中的浮点数


下一篇:Linux下统计当前文件夹下的文件个数、目录个数