um forro, este comando lê o 'list' txt e analisa para cada linha um arquivo.
for file in *.nii; do read line; mv -v "${file}" "${line}"; done < list
Eu tenho uma lista de arquivos em uma pasta, que gostaria de renomear de acordo com um arquivo de texto. Por exemplo:
Estes são os 5 arquivos na pasta.
101_T1.nii
107_T1.nii
109_T1.nii
118_T1.nii
120_T1.nii
Eu gostaria que eles renomeassem usando um arquivo de texto contendo uma lista de novos nomes de arquivos na mesma ordem, sem a extensão .nii
:
n01
n02
n03
n04
n05
Como posso fazer isso?
um forro, este comando lê o 'list' txt e analisa para cada linha um arquivo.
for file in *.nii; do read line; mv -v "${file}" "${line}"; done < list
Você poderia fazer:
paste OLD NEW|while read OLD NEW;do mv ${OLD} ${NEW};done
... onde o arquivo chamado "OLD" contém os nomes de arquivos antigos e o arquivo chamado "NEW" tem os novos nomes correspondentes (1: 1).
Se o seu shell suportar a substituição de processos, tente:
paste -d' ' <(ls *.nii) /path/to/textfile | xargs -n2 mv
ou você pode fazer isso POSIXly:
ls *.nii | paste -d' ' - /path/to/textfile | xargs -n2 mv
Tags rename