내용에 따라 텍스트 파일 이름 바꾸기

내용에 따라 텍스트 파일 이름 바꾸기

모델 입력을 위해 변경해야 할 포인트 파일이 많습니다. 내용에 따라 많은 파일의 이름을 바꾸고 싶습니다. 이 파일은 한 줄로 정렬된 텍스트 파일입니다.

파일 이름:data_lat_long.txt

1 data_20_20
2 data_30_40
3 data_50_60
.
.

등.

내 파일 이름은 1, 2, 등 입니다 3.4

로 , 에서 로 , 등 1으로 변경하고 싶습니다 .data_20_202data_30_40

답변1

while read line ; do 
    mv $line 
done < data_lat_long.txt

파일의 각 줄을 읽고 각 줄을 라는 변수에 할당하는 루프 data_lat_long.txt로 파일 내용을 리디렉션합니다 . 그런 다음 내용을 인수로 사용하여 실행합니다(이것은 파일에 지정한 시작 부분과 끝 부분입니다). 파일이 끝날 때까지 계속 반복합니다.whileread$linemv$linedata_lat_long.txt

이는 파일 이름에 data_lat_long.txt공백이 포함되어 있지 않음을 암시적으로 예상합니다(따라서 두 개의 열만 있음).

파일에 공백이 있으면 파일에 쉼표 구분 기호를 사용하는 것이 좋습니다.

1,space file1
2,space file2
3,space file3

그런 다음 다음을 사용하십시오.

while IFS=',' read -a files 
do 
   mv "${files[0]}" "${files[1]}" 
done < list.txt

이는 (이 경우 쉼표)로 구분된 텍스트를 이름이 지정된 배열에 할당하는 옵션을 활용합니다 -a. 그런 다음 개별 요소를 색인화하고 매개변수를 큰따옴표로 묶습니다. 이렇게 하면 명령을 실행할 때 배열 값이 확장됩니다.readIFS$filesmv""mv그리고따라서 파일의 공백은 매개변수 구분 기호로 처리되지 않습니다 mv. mv 1 space file1와 같은 일을 하지 않습니다 mv "1" "space file1". 이전 명령은 1및 이라는 파일/디렉토리를 space이라는 디렉터리로 이동하려고 시도합니다 file1.

관련 정보