列出特定扩展名的文件

好的,这很奇怪。 我正在使用此代码,

ls *.prj 

要在dir中列出扩展名为.prj的所有文件,但是我收到此错误,

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

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

ls * .prj | wc -l

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

没什么,bash可以处理的参数数量有限制。 做

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

请改用find命令

  find . -name "*.prj" 

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

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

希望这可以帮助。

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

 a=(*.prj) echo ${#a[@]}