【问题标题】:Counting number of files in a directory with an OSX terminal command使用 OSX 终端命令计算目录中的文件数
【发布时间】:2018-03-25 16:32:27
【问题描述】:

我正在寻找返回数字的特定目录文件计数。我会把它输入终端,它可以给我指定目录的文件数。

我已经尝试过 echo find "'directory' | wc -l" 但这不起作用,有什么想法吗?

【问题讨论】:

    标签: linux macos shell


    【解决方案1】:

    你似乎有正确的想法。我会使用-type f 只查找文件:

    $ find some_directory -type f | wc -l
    

    如果你只想直接在这个目录下的文件而不是递归搜索子目录,你可以添加-maxdepth标志:

    $ find some_directory -maxdepth 1 -type f | wc -l
    

    【讨论】:

    • 评论本身效果很好,谢谢。但我有点困惑。我使用带有一堆子目录的 NodeJs 模块文件夹对其进行了测试。当我复制这个文件夹时,Mojave 告诉我有(四舍五入)75k 个文件,而find some_directory -type f | wc -l 告诉我有(四舍五入)66k。这怎么可能?
    • @phng 我猜 Mojave 也将子文件夹视为文件,而 find 命令将其限制为实际文件。
    【解决方案2】:

    打开终端,切换到目录所在的位置。

    输入:

    find . -type f | wc -l
    

    这会在当前目录(即 . 代表的内容)内搜索所有文件,并对它们进行计数。

    【讨论】:

      【解决方案3】:

      获取目录中文件数量的最快方法是获取该目录的kMDItemFSNodeCount 元数据属性的值。

      mdls -name kMDItemFSNodeCount directory_name -raw|xargs
      

      find . -type f | wc -l 相比,上述命令的主要优势在于它几乎可以立即返回计数,即使对于包含数百万个文件的目录也是如此。

      请注意,该命令获取的是files的编号,而不仅仅是regular files

      【讨论】:

        【解决方案4】:

        我不明白为什么人们使用“find”,因为对我来说,像这样输入“ls”要容易得多:

        ls *.png | wc -l

        在当前目录中查找png图像的数量。

        【讨论】:

        • 但是 OP 不位于 images 目录中,除了计算图像之外,他们还需要一种查找目录的方法。这就是他们使用find 而不是ls 的原因。否则,当然,你有道理。
        • 主题行并非如此。它专门用于计算目录中的文件。我假设读者理解文件路径、目录和“cd”命令。
        猜你喜欢
        • 1970-01-01
        • 2019-01-16
        • 2016-01-12
        • 2021-11-13
        • 2015-05-26
        • 2012-07-31
        • 2021-03-01
        • 2016-12-15
        • 1970-01-01
        相关资源
        最近更新 更多