要计算我正在使用的文件夹中的文件数量:
ls -l | wc -l
但这比以下结果多 1:
ls | wc -l
是什么原因造成的?另外这三个数字代表什么
ls | wc
答案1
使用时,ls -l
您不仅可以获得指定目录中所有文件的列表(每行一个文件),还可以total [BLOCKS]
在顶部获得一行,显示此文件夹中所有文件总共占用了多少个文件系统块。有关此行的更多信息,请访问ls -l 之后第一行的“total”是什么?在 Stack Overflow 上。
为了每个文件仅获取一行(反之亦然),您可以使用ls -1
不添加额外信息的替代方法。
来自wc
的手册页:
Print newline, word, and byte counts for each FILE
因此,输出中的第一个数字wc
是行数,第二个数字是字数(“单词是由空格分隔的非零长度的字符序列。"),最后一个数字是输入的大小(以字节为单位)。
man COMMAND
您可以在终端中输入来阅读大多数命令的 manpage(手册页) ,例如man ls
或man wc
。
答案2
看此链接关于为什么尝试处理(解析)输出ls
是有风险的。
相反,获取目录的链接数(参见man stat
),减去 2(对于.
和..
条目)。
dir=$PWD
Nfiles=$(( $(stat --printf=%h $dir) - 2 ))
注意:这会计算 中的文件和目录$dir
。 分别计算这两个是另一个问题。