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

관련 정보