bash - 将 2+ 目录中的文件数获取到数组中
问题描述
我有以下 Bash 脚本。它在 3 个(或更多)目录中查找图片。
#!/bin/sh
declare -a ext=(".tga" ".jpg" ".png")
declare -a directory=(
"../Untitled.ed.tga/" "../Untitled.ed.jpg/" "../Untitled.ed.png/")
for ((ctDir=0; ctDir<${#directory[@]}; ctDir++));
do
#get number of Pix in each Dir
cd ${directory[${ctDir}]}
let numPixInDir[${ctDir}]=$(
bc <<< " $( ls *${ext[${ctDir}]} | wc -l) " )
let "f = numPixInDir[${ctDir}]"
echo "f == ${f}"
echo "numPix == ${numPixInDir[${ctDir}]}"
done
for ((ctN=1; ctN<=${f}; ctN++));
do
for ((ctDir=0; ctDir<${#directory[@]}; ctDir++));
do
printf "%05d\t" ${ctN}
done
printf '\n'
done
如果目录具有相同数量的文件,上述内容可以满足我的要求,但是如果我将变量 ${f} 设置为每个目录的数组 -
let "f[${ctDir}] += numPixInDir[${ctDir}]"
然后第一个 for 循环引发错误:
((: ctN<=: syntax error: operand expected (error token is "=")
任何人都想我怎么能成功地做到这一点?
解决方案
推荐阅读
- html - 删除页脚 Prestashop 上的 h4 标签
- javascript - 使用 {...state} 创建只修改一个字段的新对象实例在 React JS 中不起作用
- python - 进行批量文件写入或以较小的部分写入文件是否更快?
- swift - 快速转义反斜杠无法按预期工作
- java - 转换 Observable onError 并发出一个项目
- line-breaks - 如何使用 reStructuredText 创建新行?
- docker - 在使用 docker compose 3 启动我的应用程序之前,我应该如何确定 DB 已启动
- php - Android 应用内购买验证问题:无法解析代码,返回值始终为零
- r - 我正在尝试将包含相同列标题的 25 个文件逐行追加到 R 中的单个数据框中
- asp.net-core-signalr - ASP.NET Core SignalR 客户端 WSS 问题