다양한 동작 부분을 사용하여 for 루프 실행

다양한 동작 부분을 사용하여 for 루프 실행

예: 텍스트 파일에 100개의 폴더 이름이 저장되어 있습니다. for동일한 루프에서 10개의 이름마다 다른 명령줄을 적용하려면 어떻게 해야 합니까? 즉, 10개의 폴더마다 다른 이름으로 이름을 바꾸려면 mv동일한 for 루프에서 텍스트 파일의 10개 항목마다 해당 명령을 어떻게 적용합니까?

#!/bin/bash -f
source=PATH TO THE DATA (100 FOLDERS)
for f in $(cat text.txt); do 
mv ${source}/"old folder name" ${source}/" new folder name"
done

답변1

텍스트 파일에 있으므로 for서로 다른 인덱스 정수를 사용하여 두 개의 루프를 실행하고 텍스트 파일에서의 위치에 따라 파일 주소를 지정할 수 있습니다.

for (( i=0 ; i<=9 ; i++ )) ; do
  newpos=$i_files
  for (( j=1 ; j<=10 ; j++ )) ; do
     mv "$( sed -n "$(( $i*10+$j ))p" filelist)" "$newpos"
  done
done

그 정도이기 때문에 mv입력 파일의 덩어리를 사용할 수도 있습니다.sed

 for (( i=0 ; i<=9 ; i++ )) ; do
    newpos=$i_files
    mv "$( sed -n "$(( $i*10+1 )),$(( ($i+1)*10 ))p" filelist)" "$newpos"
 done

이 섹션에 대한 설명 sed: sed -n "4,8p" file파일의 4~8번째 줄이 인쇄됩니다.

관련 정보