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

出力は次のようになります。

.xlsファイルを除いて、Test1 Test2の下のファイル内のディレクトリだけを処理したいと思います。

ベストアンサー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

おすすめ記事