列出特定扩展名的文件

列出特定扩展名的文件

好吧,这很奇怪。我正在使用这个代码,

ls *.prj

要列出目录中所有带有 .prj 扩展名的文件,但我收到此错误,

bash:/bin/ls:参数列表太长

我最终希望获得文件的数量,并且我正在使用,

ls *.prj |厕所

但即使这个命令也给出了同样的错误。知道我哪里出错了吗?

答案1

使用find命令代替

 find . -name "*.prj"

您还可以将命令与 find 结合使用

find . -name "*.prj" -exec COMMAND {} \;

希望这可以帮助。

答案2

没有,bash 可以处理的参数数量是有限制的。

ls | grep '\.prj$' | wc -l

答案3

解析的输出ls不可靠。它可能会在您的例子中起作用,但ls会破坏不可打印的字符。这是一种完全可靠的方法来计算与特定扩展名匹配的文件数。此 shell 代码片段创建一个包含文件名的数组,然后打印数组中的元素数。

shopt -s nullglob
a=(*.prj)
echo ${#a[@]}

相关内容