/dir1/--$ ls
1.txt 2.ssl.txt
dir1
주어진 파일이 디렉토리에 존재하는 경우 , .csv
나열된 파일만 반복됩니다..csv
dir1
여기에 나열된 파일이 없으므로 루프 .csv
에 들어갈 필요가 없습니다.
답변1
이것을 사용하십시오 :
find dir1/ -maxdepth 1 -type f -iname "*.csv" -print0 | while IFS= read -r -d '' f; do
# process file
echo "$f"
done
find
-type f
.csv
( )로 끝나는 파일은 해당 하위 디렉터리 (-iname "*.csv"
) 에서만 검색되며dir1
하위 디렉터리(-maxdepth 1
)에서는 검색되지 않습니다. 파일 이름은 특수 파일 이름을 설명하기 위해 널 문자( )로-print0
구분하여 인쇄됩니다 .- 루프
while
는 널 문자로 구분된 입력을 읽고 파일 이름을 변수에 저장합니다$f
.
답변2
for csvfile in */*.csv
do
echo "Processing $csvfile"
done
이는 디렉터리가 모두 현재 디렉터리에 있다고 가정합니다. 그렇지 않은 경우 질문을 업데이트하여 실제 위치를 표시하십시오.