如何在Linux中统计目录中的文件数量[5个示例]如何在Linux中统计目录中的文件数量[5个示例]如何在Linux中统计目录中的文件数量[5个示例]如何在Linux中统计目录中的文件数量[5个示例]
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在Linux中统计目录中的文件数量[5个示例]

下面介绍几种在 Linux 命令行中统计目录中文件数量的方法。

我想您知道用于计算行数的 wc 命令。我们可以使用相同的 wc 命令和 ls 命令来统计目录中的文件数量。

此任务看起来很简单,但根据您的需要和计数文件的定义,很快可能会变得稍微复杂。在让您进一步困惑之前,让我们看看 Linux 中计算文件数量的各种用例。

统计Linux目录下的文件数量

首先让我向您展示我将在本教程中使用的测试目录的内容:

abhishek@linux:~/tutorials$ ls -la
total 64
drwxr-xr-x 4 abhishek abhishek 4096 Apr 29 17:53 .
drwxr-xr-x 55 abhishek abhishek 4096 Apr 29 15:50 ..
-rwxr–r– 1 abhishek abhishek 456 Mar 6 16:21 agatha.txt
-rw-r–r– 1 abhishek abhishek 0 Apr 16 19:53 .a.t
-rwxr–r– 1 abhishek abhishek 140 Mar 22 16:41 bash_script.sh
-rw-rw-r– 1 abhishek abhishek 95 Feb 11 13:12 cpluplus.cpp
-rw-r–r– 1 abhishek abhishek 1778 Apr 29 16:16 my_zip_folder.zip
drwxr-xr-x 4 abhishek abhishek 4096 Apr 19 19:07 newdir
-rw-r–r– 1 abhishek abhishek 163 Apr 13 15:07 prog.py
-rw-r–r– 1 abhishek abhishek 19183 Mar 18 18:46 services
-rw-r–r– 1 abhishek abhishek 356 Dec 11 21:35 sherlock.txt
-rwxrw-r– 1 abhishek abhishek 72 Jan 21 15:44 sleep.sh
drwxr-xr-x 3 abhishek abhishek 4096 Jan 4 20:10 target

可以看到该目录下有9个文件(包括1个隐藏文件)和2个子目录。但您不必手动执行此操作。让我们使用 Linux 命令来统计文件的数量。

计算文件和目录的数量(没有隐藏文件)

您可以简单地运行 ls 和 wc 命令的组合,它将显示文件的数量:

ls | wc -l

这是输出:

abhishek@linux:~/tutorials$ ls | wc -l
10

该命令有问题。它统计当前目录中的所有文件和目录。但它看不到隐藏文件(名称以点开头的文件)。

这就是为什么上面的命令显示了 10 个文件而不是 11 个(9 个文件和 2 个目录)的原因。

计算文件和目录(包括隐藏文件)的数量

您可能已经知道 ls 命令的 -a 选项显示隐藏文件。但如果您使用 ls -a 命令,它还会显示 . (当前目录)和..(父目录)。这就是为什么您需要使用 -A 选项来显示隐藏文件(不包括 .和..目录。

ls -A | wc -l

这将为您提供当前目录中文件和目录的正确计数。看一下输出,显示计数为 11(9 个文件和 2 个目录):

abhishek@linux:~/tutorials$ ls -A | wc -l
11

您还可以使用此命令来达到相同的结果:

ls -1A | wc -l

请注意,使用的选项是 1(一)而不是 l(L)。使用 l (L) 选项会在输出的开头显示附加行(请参阅文章开头的目录输出中的“total 64”)。使用 1(一)列出每行一个内容,不包括附加行。这给出了更准确的结果。

计算文件和目录(包括子目录)的数量

到目前为止,您看到的只是当前目录中的文件和目录的计数。它不考虑子目录中的文件。

如果想统计所有子目录下文件和目录的数量,可以使用tree命令。

tree -a

此命令显示目录结构,然后在输出底部显示摘要。

abhishek@linux:~/tutorials$ tree -a
.
├── agatha.txt
├── .a.t
├── bash_script.sh
├── cpluplus.cpp
├── my_zip_folder.zip
├── newdir
│   ├── new_dir
│   │   ├── c.xyz
│   │   ├── myzip1.zip
│   │   └── myzip2.zip
│   └── test_dir
│   ├── c.xyz
│   ├── myzip1.zip
│   └── myzip2.zip
├── prog.py
├── services
├── sherlock.txt
├── sleep.sh
└── target
├── agatha.txt
├── file1.txt
└── past
├── file1.txt
├── file2.txt
└── source1
└── source2
└── file1.txt
7 directories, 19 files

从输出中可以看到,总共有 7 个目录和 20 个文件。这个结果的好处是它在文件计数中不计算目录。

只计算文件,不计算目录

到目前为止,我们看到的所有用于计算文件数量的解决方案也都考虑了目录。目录本质上是文件,但是如果您只想计算文件数而不是目录数怎么办?您可以使用精彩的 find 命令。

您可以运行此命令:

find . -type f | wc -l

上面的命令搜索当前目录及其子目录中的所有文件(类型f)。

abhishek@linux:~/tutorials$ find . -type f | wc -l
20

仅计算文件,不计算目录,仅计算当前目录,不计算子目录

这很酷!但是,如果您只想统计当前目录中的文件数量,不包括子目录中的文件,该怎么办?您可以使用与上面相同的命令,但略有不同。

您所要做的就是添加您的发现的“深度”。如果设置为1,则不会进入子目录。

find . -maxdepth 1 -type f | wc -l

现在的输出如下:

abhishek@linux:~/tutorials$ find . -maxdepth 1 -type f | wc -l
9

最后……

在 Linux 中,您可以采用多种方法来实现同一目标。我很确定还有其他几种方法可以计算 Linux 中的文件数量。如果您使用其他命令,为什么不与我们分享呢?

我希望这个 Linux 教程能帮助您学到一些东西。请保持联系以获取更多 Linux 技巧。

©2015-2025 艾丽卡 support@alaica.com