예: 텍스트 파일에 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번째 줄이 인쇄됩니다.