renomeia uma lista de arquivos de acordo com um arquivo de texto

3

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?

    
por Elijah Mak 28.08.2014 / 20:24

3 respostas

5

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
    
por 28.08.2014 / 20:51
1

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).

    
por 28.08.2014 / 20:49
0

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
    
por 28.08.2014 / 20:54

Tags