使用bash,如何获取一个文件夹中的文件数量,不包括解释器抱怨的
shell脚本中的目录?
在朋友的帮助下,我已经尝试过了
$files=$(find ../ -maxdepth 1 -type f | sort -n) $num=$("ls -l" | "grep ^-" | "wc -l")
它从命令行返回:
../1-prefix_blended_fused.jpg: No such file or directory ls -l : command not found grep ^-: command not found wc -l: command not found
分别.这些命令在命令行上工作,但不使用bash脚本.
给定一个填充有格式如1-pano.jpg的图像文件的文件,我想抓住目录中的所有图像,以获得最大的编号文件,以贴到正在处理的下一个图像上.
为什么差异?
引号引起错误消息.
要获取目录中的文件数:
shopt -s nullglob numfiles=(*) numfiles=${#numfiles[@]}
它创建一个数组,然后将其替换为其元素的计数.这将包括文件和目录,但不包括dotfiles或.或..或其他虚线目录.
使用nullglob,所以空目录的计数为0而不是1.
您可以使用find -type f,也可以对目录进行计数并减去:
# continuing from above numdirs=(*/) numdirs=${#numdirs[@]} (( numfiles -= numdirs ))
另请参阅“How can I find the latest (newest,earliest,oldest) file in a directory?”
您可以在执行块中拥有尽可能多的空格.他们经常帮助阅读.唯一的缺点是它们使文件更大一点,可能会缓慢初始解析(仅)稍微.有几个地方必须有空格(例如围绕[,[[,],]]和=在比较中)和一些不能(例如在作业中的=大约=).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。