【发布时间】:2018-03-25 16:32:27
【问题描述】:
我正在寻找返回数字的特定目录文件计数。我会把它输入终端,它可以给我指定目录的文件数。
我已经尝试过 echo find "'directory' | wc -l" 但这不起作用,有什么想法吗?
【问题讨论】:
我正在寻找返回数字的特定目录文件计数。我会把它输入终端,它可以给我指定目录的文件数。
我已经尝试过 echo find "'directory' | wc -l" 但这不起作用,有什么想法吗?
【问题讨论】:
你似乎有正确的想法。我会使用-type f 只查找文件:
$ find some_directory -type f | wc -l
如果你只想直接在这个目录下的文件而不是递归搜索子目录,你可以添加-maxdepth标志:
$ find some_directory -maxdepth 1 -type f | wc -l
【讨论】:
find some_directory -type f | wc -l 告诉我有(四舍五入)66k。这怎么可能?
find 命令将其限制为实际文件。
打开终端,切换到目录所在的位置。
输入:
find . -type f | wc -l
这会在当前目录(即 . 代表的内容)内搜索所有文件,并对它们进行计数。
【讨论】:
获取目录中文件数量的最快方法是获取该目录的kMDItemFSNodeCount 元数据属性的值。
mdls -name kMDItemFSNodeCount directory_name -raw|xargs
与find . -type f | wc -l 相比,上述命令的主要优势在于它几乎可以立即返回计数,即使对于包含数百万个文件的目录也是如此。
请注意,该命令获取的是files的编号,而不仅仅是regular files。
【讨论】:
我不明白为什么人们使用“find”,因为对我来说,像这样输入“ls”要容易得多:
ls *.png | wc -l
在当前目录中查找png图像的数量。
【讨论】:
find 而不是ls 的原因。否则,当然,你有道理。