파일을 반복하고 Bash에서 색인 및 개수를 얻습니다.

파일을 반복하고 Bash에서 색인 및 개수를 얻습니다.

이것적당한 방법Bash에서 디렉터리의 파일을 반복하려면 다음과 같이 "for 루프"와 glob을 사용하세요.

for f in *.jpg; do
    echo "- Processing file: $f"
done

하지만 총 파일 수와 루프 상호 작용의 현재 인덱스를 검색하는 방법은 무엇입니까? 진행 상황을 표시하려면 누적 수가 아닌 총 수가 필요합니다.

답변1

파일 목록을 다음에 저장하겠습니다.대량으로, 이렇게 하면 파일 시스템을 두 번 읽을 필요가 없으므로 성능이 향상되고 잠재적인 경쟁 조건이 줄어듭니다. 그런 다음 다른 변수를 인덱스로 사용하십시오.

files=(*.jpg)
total=${#files[@]}
i=0
for f in "${files[@]}"; do
    i=$(( i + 1 ))
    echo index $i
    echo total $total
    echo "- Processing file: $f"
done

설명하다

  • files=(*.jpg): glob을 배열에 저장$files
  • total=${#files[@]}: 총 개수를 읽어옵니다.$total
  • i=0: $i0으로 초기화됩니다.
  • i=$(( i + 1 ))$i: 각 루프에 1개씩 추가

이는 "첫 번째" 루프가 1이라고 가정합니다. 귀하의 의견에 따라 0부터 시작하실 수도 있습니다.

관련 정보