仅在特定文件夹中保存文件数量

仅在特定文件夹中保存文件数量

我使用此脚本来保存主文件夹中的文件数量,但它也计算该主文件夹内的子文件夹。 nfiles=$(ls -1 /home/userA/mainfolder | wc -l)有什么建议我可以将其修改为仅包含文件而不包含文件夹吗?

答案1

不要用于find此。

除了需要非可移植的 GNU 扩展才能使其工作之外,它还需要stat()它搜索的每个文件。ls另一方面,可以简单地-1每行列出当前目录的目录项,同时-q用 ? 引用所有不可打印的内容。问号(包括\nelines)/,并为每个目录列表附加。

这样,对于-c当前目录中的简单数量的非点文件,您可以执行以下操作:

ls -1pq | grep -c -v /

整个过程不仅可能比find实际情况更快,而且也是 POSIXly 完成的。

答案2

而不是解析ls, 您可以使用find

find . -maxdepth 1 -type f ! -name ".*" | wc -l

这将查找-type f当前目录 ( .) 中的所有文件 (),除了以 . ( ! -name ".*") 并将结果传递给wc计算行数。

要将其用作脚本中的变量:

nfiles=$(find . -maxdepth 1 -type f ! -name ".*" | wc -l)

相关内容