数数文件夹中有多少文件

本文教你查看文件夹中文件数量的方法。(注:针对 Beginner 的小文,老司机不用点进来了)

不像图形界面,在命令行里面不能直接看出文件夹中有多少文件 – 当然你可以通过修改 PS1 或者其他插件来实现这一功能 – 但通常我们觉得没有必要。

这个工作看起来还是蛮简单的,只要你知道了 wc 命令和 ls 命令的用法。但实际情况根据你的目的还是有一些小复杂的。

开始之前,让我们先用 ls 命令看看文件夹中的内容:

abhishek@linuxhandbook:~/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 个文件(包括一个隐藏文件)和 2 个文件夹。这是比较少,你可以数出来,多的话怎么办呢?

数数有多少文件和文件夹(不包含隐藏文件)

这个非常简单:

ls | wc -l

输出是这样的:

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

这个命令的问题是它不算隐藏文件,所以结果是 10 而不是 11。

带上隐藏文件

这就需要用到 ls 命令的 -A 标志了。我们知道,-a 的话用把 ... 也输出,这不是我们想要的,所以我们使用 -A

ls -A | wc -l

我们如愿以偿得到了 11 这个结果。

带上子文件夹

那如果我们想要数数包含子文件夹的所有文件怎么办呢?别急,我们还有 tree 命令:

abhishek@linuxhandbook:~/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

最后一行的统计信息很明确啦。但需要知道的是,tree 命令很有可能需要你自己安装。

只数文件

这就需要祭出我们强大的 find 命令了:

find . -type f | wc -l

这会在当前文件夹及其子文件夹中找到所有的普通文件。如果你只想看看当前文件夹的,需要在 find 命令上下点功夫:

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

总结

在 Linux 中,你有无数中方法来实现这个目的。这就是 Linux(Unix)哲学的好处。我相信你可以尝试其他命令来实现!

写在最后

这篇小文的主要内容来自 Count Number of Files in a Directory in Linux

hah
Copyleft - All rights reversed. The internet is free and so is my content.