好吧,这很奇怪。我正在使用这个代码,
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[@]}