디렉터리에 .csv 파일이 포함된 경우에만 디렉터리의 각 파일을 반복하는 방법은 무엇입니까?

디렉터리에 .csv 파일이 포함된 경우에만 디렉터리의 각 파일을 반복하는 방법은 무엇입니까?
/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

이는 디렉터리가 모두 현재 디렉터리에 있다고 가정합니다. 그렇지 않은 경우 질문을 업데이트하여 실제 위치를 표시하십시오.

관련 정보