当前位置: 首页>>技术教程>>正文


如何计算目录中的文件数但不递归

问题描述

简单的问题我确定。我已经看到 an answer 展示了如何做到这一点,包括子目录,但我想知道只有当前目录中有多少文件(不是文件夹)。谢谢。

最佳办法

ls -F |grep -v / | wc -l
  1. ls -F 列出所有文件并将指示符(*/=>@| 之一)附加到条目

  2. grep -v / 保留所有不包含斜杠的字符串

  3. wc -l 计数行

次佳办法

试试这个oneliner:

find -maxdepth 1 -type f | wc -l

第三种办法

尝试这个

ls -al | grep ^[-] | wc -l
  1. ls -al — 以长列表格式列出所有文件

  2. grep ^[-] — 搜索以 “-” 开头的字符串,当用 ls -al 列出文件时,该字符串是表示常规文件的符号

  3. wc -l — 计算行数

第四种办法

我只想添加 thom’s answer 因为我喜欢玩 Bash 。它是这样的:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

Bellow 是我的 /data 目录的示例结果:

Directory /data has 580569 file(s).

下面是我的解释:

  1. echo double-quoted-message 将打印一条理想的消息。

  2. echo 的双引号消息中的 $(any-desirable-valid-command) 将打印相关命令执行的结果。

  3. pwd 将打印当前目录。

  4. ls -F 用于列出所有文件并将指示符(*/=>@| 之一)附加到条目。我从 thom’s answer 复制了这个。

  5. grep -v / 是搜索 plain-text 的命令,-v / 参数将保留所有不包含斜杠的字符串。

  6. wc -l 将打印行计数。

我知道这个问题已经有 3 年历史了,我实在忍不住想添加另一个答案。

第五种办法

如果您的系统上安装了 tree,您可以使用以下命令:

tree -L 1 /path/to/your/directory | tail -n 1

它向您显示该目录中的文件和目录数。

-L n 显示搜索深度。

您可以使用 sudo apt-get install tree 安装 tree

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12313.html,未经允许,请勿转载。