【问题标题】:Count number of files within a directory in Linux? [closed]计算Linux目录中的文件数? [关闭]
【发布时间】:2014-01-20 15:06:27
【问题描述】:

要统计目录中的文件数量,我通常使用

ls directory | wc -l

但是还有其他命令不使用wc 吗?

【问题讨论】:

  • wc 究竟是什么问题导致您无法使用它?
  • 并非如此。 Unix 命令通常旨在以这种方式使用,链接在管道中。
  • 我正在通过 ssh 连接到另一台主机以访问一些数据。不幸的是,一堆基本命令似乎在这台主机上不起作用。如果我使用 wc 它会返回 "unrecognized command" 。所以我正在寻找其他选择。
  • 使用tree 命令。它会给你树,并在底部告诉你有多少文件和目录。如果你想隐藏文件也使用tree -a
  • @vanza "wc 到底有什么问题" ,如果文件名中有\n 怎么办?是的,不太可能!但在技术上仍然有效且可行。

标签: linux ls


【解决方案1】:

这是一个:

ls -l . | egrep -c '^-'

注意:

ls -1 | wc -l

这意味着: ls: 列出目录中的文件

-1:(这是一个 ONE)每行只有一个条目。如果您也想要隐藏文件,请将其更改为 -1a

|: 管道输出到...

wc: "字数"

-l:计数lines。

【讨论】:

  • 不用等待。我做了一个嘘声。你是绝对正确的 Sajad Lfc 。 ls -1 目录 | egrep -c '' 这将返回 dir 中的文件数。谢谢。
  • @SajadKaruthedath ls -l . | egrep -c '^-' 不计算隐藏文件。我建议将-a 标志添加到ls
  • @runios 这是因为ls -l 在顶部返回一个附加行,将文件大小相加为总数量。您应该使用ls -1 而不是ls -l。此外,如果想要隐藏文件但没有目录 ... 你应该使用 ls -1A | wc -l
  • 不使用管道的有效原生方式:du --inodes [root@cs-1-server-01million]# du --inodes 1000001 ./vdb.1_1.dir 1000003 。 [root@cs-1-server-01 百万]#
  • 这不是违反不解析ls的传统吗?