参见英文答案 > 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)以避免混淆可能是个好主意.