bash如何仅循环目录名而不包括特定文件?

bash如何仅循环目录名而不包括特定文件?
IFS=$'\n'
for CITY in $(cat /home/user/CT.txt)
do
 FILES=/mnt/dir1/dir2/$CITY/*
 count=0
folder=''
 for f in $FILES
 do
  echo "Processing $f file..."
        ((count++))
        folder=$f
  # take action on each file. $f store current file name
   #cat $f
 done

下面是CT.txt的内容和目录结构:

cat CT.txt
Test1 Test2 Test3

cd Test1/
|_dir1
exm.xls
cd Test2
|_dir1
exm.xls

输出应该:

我只想在 Test1 Test2 下处理文件内的目录,不包括 .xls 文件

答案1

在不处理脚本其余部分的情况下,跳过以“.xls”结尾的文件:

[[ $f =~ .xls$ ]] && continue

或者,如果您不喜欢这种语法:

case "$f" in
  (*.xls) continue;;
esac

或者,如果您不喜欢这种语法:

shopt -s extglob
for f in /mnt/dir1/dir2/$CITY/!(*.xls)
do
  : etc
done

相关内容