텍스트 파일을 기반으로 파일 목록 이름 바꾸기

텍스트 파일을 기반으로 파일 목록 이름 바꾸기

텍스트 파일을 기반으로 이름을 바꾸려는 폴더의 파일 목록이 있습니다. 예를 들어:

폴더에 5개의 파일이 있습니다.

101_T1.nii
107_T1.nii 
109_T1.nii
118_T1.nii
120_T1.nii

동일한 순서로 새 파일 이름 목록을 포함하지만 확장자는 제외된 텍스트 파일을 사용하여 이름을 바꾸길 원합니다 .nii.

n01
n02
n03
n04
n05

어떡해?

답변1

하나의 라이너인 이 명령은 "목록" txt를 읽고 파일의 각 줄을 구문 분석합니다.

for file in *.nii; do read line;  mv -v "${file}" "${line}";  done < list

답변2

다음을 수행할 수 있습니다.

paste OLD NEW|while read OLD NEW;do mv ${OLD} ${NEW};done

...여기서 "OLD"라는 파일에는 이전 파일 이름이 포함되고 "NEW"라는 파일에는 일치하는 새로운(1:1) 이름이 있습니다.

답변3

쉘이 프로세스 대체를 지원하는 경우 다음을 시도하십시오.

paste -d' ' <(ls *.nii) /path/to/textfile | xargs -n2 mv

또는 POSIXly로 수행할 수 있습니다.

ls *.nii | paste -d' ' - /path/to/textfile | xargs -n2 mv

관련 정보