이것적당한 방법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
:$i
0으로 초기화됩니다.i=$(( i + 1 ))
$i
: 각 루프에 1개씩 추가
이는 "첫 번째" 루프가 1이라고 가정합니다. 귀하의 의견에 따라 0부터 시작하실 수도 있습니다.