![bash 특정 파일을 포함하지 않고 디렉토리 이름만 반복하는 방법은 무엇입니까? [복사]](https://linux55.com/image/115789/bash%20%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%ED%8F%AC%ED%95%A8%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EC%9D%B4%EB%A6%84%EB%A7%8C%20%EB%B0%98%EB%B3%B5%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
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