如何递归地计数Linux目录中的文件?

我发现了这个:

find DIR_NAME -type f ¦ wc -l

但是当我运行它时,它返回以下错误。

查找:路径必须在表达式之前:


当前回答

由于UNIX中的文件名可能包含换行符(是的,换行符),wc -l可能会计算过多的文件。我将为每个文件打印一个点,然后计算这些点:

find DIR_NAME -type f -printf "." | wc -c

注意:-printf选项只适用于GNU findutils中的find。你可能需要安装它,比如在Mac上。

其他回答

ls -l | grep -e -x -e -dr | wc -l 

长串 过滤文件和dirs 计算过滤后的行号

找到-type f | wc -l

OR(如果目录是当前目录)

找到。-type f | wc -l

你可以使用

$ tree

安装后的树包用

$ sudo apt-get install tree

(在Debian / Mint / Ubuntu Linux机器上)。

该命令不仅显示文件的计数,还分别显示目录的计数。选项-L可用于指定最大显示级别(默认情况下,它是目录树的最大深度)。

通过提供-a选项,也可以包含隐藏文件。

tree $DIR_PATH | tail -1

样例输出:

5309个目录,2122个文件

如果你需要递归计算特定的文件类型,你可以这样做:

find YOUR_PATH -name '*.html' -type f | wc -l 

-l只是显示输出中的行数。

如果需要排除某些文件夹,请使用-not -path

find . -not -path './node_modules/*' -name '*.js' -type f | wc -l