首页 > 解决方案 > 将 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 "=")

任何人都想我怎么能成功地做到这一点?

标签: bashsh

解决方案


推荐阅读