如何递归地计数Linux目录中的文件?
我发现了这个:
find DIR_NAME -type f ¦ wc -l
但是当我运行它时,它返回以下错误。
查找:路径必须在表达式之前:
如何递归地计数Linux目录中的文件?
我发现了这个:
find DIR_NAME -type f ¦ wc -l
但是当我运行它时,它返回以下错误。
查找:路径必须在表达式之前:
当前回答
找到-type f | wc -l
OR(如果目录是当前目录)
找到。-type f | wc -l
其他回答
这应该可以工作:
find DIR_NAME -type f | wc -l
解释:
-type f只包括文件。 |(而不是……)将find命令的标准输出重定向到wc命令的标准输入。 Wc (word count的缩写)对输入(docs)的换行、单词和字节进行计数。 -l只计算换行。
注:
将DIR_NAME替换为。执行当前文件夹中的命令。 您还可以删除类型f以在计数中包括目录(和符号链接)。 如果文件名可以包含换行符,这个命令可能会被高估。
解释为什么你的例子不起作用:
在您所显示的命令中,您没有使用“Pipe”(|)来连接两个命令,而是使用了shell不将其识别为命令或类似内容的断线(δ)。这就是为什么你会得到错误消息。
对于当前目录:
find -type f | wc -l
如果您想知道当前工作目录中存在多少文件和子目录,可以使用这一行程序
find . -maxdepth 1 -type d -print0 | xargs -0 -I {} sh -c 'echo -e $(find {} | wc -l) {}' | sort -n
这将在GNU风格下工作,对于BSD linux(例如OSX),只需在echo命令中省略-e即可。
tree $DIR_PATH | tail -1
样例输出:
5309个目录,2122个文件
可以使用ncdu命令。它将递归地计算Linux目录包含多少文件。下面是一个输出示例:
它有一个进度条,如果你有很多文件,这很方便:
在Ubuntu上安装:
sudo apt-get install -y ncdu
基准:我使用https://archive.org/details/cv_corpus_v1.tar(380390个文件,11 GB)作为文件夹,其中必须计算文件的数量。
找到。-type f | wc -l:大约1m20s完成 Ncdu:大约1m20s完成