我编写了一些使用dir.listFiles().length;
获取目录中文件数的java代码。命令ls -l | wc
给了我一个不同的数字。我相信这两个命令都会跳过隐藏的目录。可能是造成不同数字的原因是什么?
答案 0 :(得分:2)
ls -l | wc
计算ls -l
输出的行数,在具有单个文件的目录中,它仍然会输出2行,这并不意味着它在该目录中有2个文件
答案 1 :(得分:0)
来自man wc
:
wc - print newline, word, and byte counts for each file.
当命令ls -l | wc
给出类似3 7 15
的输出时,wc
表示输入中有3个换行符,7个单词和15个字符(字节)({{1}的输出})。 3个换行符意味着有3个文件,因为ls -l
列出了每个带换行符的文件。
另一方面,Java中的ls -l
是dir.listFiles().length
方法返回的File
数组的长度,实际上是dir.listFiles()
中的文件数。
如果您想要dir
的类似结果,请传递wc
或仅-lines
选项,该选项仅打印换行计数:
-l
最重要的是,ls -l | wc -l
会在dir.listFiles()
中列出所有{strong>隐藏文件,其中dir
不会&# 39;默认情况下列出。要与Java的结果保持一致,请使用:
ls