如果一个目录中文件数不是很多,那就可以一眼看出其中有多少个文件。但是如果计算子目录在内的文件数呢?或者如果文件数量很多,比如几百上千个,那么怎么确切地知道该目录下的文件数呢?
今天我们总结一下查看 Linux 中目录下文件数量的方法。
方法1:使用 ls 和 wc 命令
最简单的方法是使用 wc 命令来计算文件数。
如下所示:
ls | wc -l
上述命令将会计算所有文件和目录,但不包括隐藏的文件和目录。如果想要将隐藏的文件和目录也包括在内,可以在 ls 命令后添加 -A 选项,不过这不会将目录 . 以及 .. 计算在内。
ls -A | wc -l
如果只想计算当前目录中的文件数(包括隐藏文件),可以使用如下组合命令:
ls -Ap | grep -v /$ | wc -l
上述命令中:
- ls 命令的 -p 选项在目录名称的末尾添加 /;
- ls 命令的 -A 选项会列出所有文件和目录,包括隐藏的文件,但是不包括 . 和 .. ;
- grep -v /$ 只显示文件末尾不带 / 的条目(即只显示文件);
- wc -l 计算数量。
也就是说,使用 ls 命令列出所有文件和目录(在目录名的末尾添加 / 以将其与文件做个区分),然后使用管道重定向将其输出使用 grep 解析,grep 命令只显示末尾没有 / 的条目,最后使用 wc 命令计算条目数量。
方法2:使用 tree 命令计算目录中的文件数
除了使用 ls 和 wc 命令以外,还可以使用 tree 命令显示当前目录及其所有子目录中的文件数。如下所示:
tree -a
如上图所示,在最后一行显示了文件和目录的数量,这是包括了隐藏的文件和目录的(因为 -a 选项)。
如果只想获取当前目录中的文件数,而不需要计算子目录,可以设置级别 1,如下所示:
tree -a -L 1
方法3:使用 find 命令计算目录中的文件数
find 命令在处理文件相关的问题时,总是很有用的。
要计算目录中的文件数,首先使用 find 命令获取所有文件,然后使用 wc 命令计算数量。如下所示:
find directory_path -type f | wc -l
上述命令中 -type -f 选项表示只查找文件。
如果不希望从子目录中获取文件,请将find命令的范围限制在级别1,即当前目录。如下所示:
find . -maxdepth 1 -type f | wc -l
以上就是本次分享全部内容,欢迎讨论。