【问题标题】:Counting files in a huge directory [duplicate]计算大目录中的文件[重复]
【发布时间】:2020-01-04 03:38:08
【问题描述】:

this question相关。

如何计算一个目录中的文件数量,该目录如此庞大以至于ls 返回的字符太多,命令行无法处理?

$ ls 150_sims/combined/ | wc -l
bash: /bin/ls: Argument list too long

【问题讨论】:

  • 目录中有多少个文件?
  • 错误信息与您的命令不匹配。你用过ls 150_sims/combined/ls 150_sims/combined/*吗?
  • 找到 150_sims/ -type f |wc -l
  • 如果你要解析ls,你会想要使用ls -f。如果您有很多条目,则性能差异很明显。

标签: linux bash


【解决方案1】:

试试这个:

$ find 150_sims/combined/ -maxdepth 1 -type f | wc -l

如果您确定目录中没有目录,则可以将命令简化为:

$ find 150_sims/combined/ | wc -l

【讨论】:

  • 如果文件名包含允许的换行符怎么办? See.
  • 然后使用find 150_sims/combined/ -maxdepth 1 -type f -printf '.' | wc -c 它将适用于任何文件名
【解决方案2】:

如果文件名中没有换行符,一个简单的ls -A | wc -l 会告诉您目录中有多少文件。请注意,如果您有ls 的别名,这可能会触发对 stat 的调用(例如:ls --colorls -F 需要知道文件类型,这需要调用 stat),所以从命令行,调用命令ls -A | wc -l\ls -A | wc -l 避免别名。

ls -A 150_sims/combined | wc -l

如果您对计算文件和目录感兴趣,可以尝试以下操作:

\ls -afq 150_sims/combined | wc -l

这包括...,所以你需要从计数中减去2

echo $(\ls -afq 150_sims/combined | wc -l) - 2 | bc

【讨论】:

    猜你喜欢
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多