将2个以上目录中的文件数获取到数组中

时间:2018-09-12 14:39:56

标签: bash sh

我有以下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 "=")

有人知道我如何成功做到这一点吗?

0 个答案:

没有答案