如何递归地计数Linux目录中的文件?
我发现了这个:
find DIR_NAME -type f ¦ wc -l
但是当我运行它时,它返回以下错误。
查找:路径必须在表达式之前:
如何递归地计数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