como posso alterar o nome de muitos arquivos em uma pasta [closed]

1

Eu tenho uma pasta com 1000 arquivos.

O nome deles é como abaixo

... P1_A1 _R2 ....

... P1_A2 _R2 ....

... P1_A3 _R2 ....

que apenas o meio é importante, conforme destacado

e eu tenho um arquivo de chave .txt na mesma pasta com esta informação

Sample  P   R   Col
    1   1   A   1
    2   1   A   2
    3   1   A   3

Eu quero verificar o arquivo .txt e alterar o nome do arquivo de acordo ou salvar com um nome em outra pasta. por exemplo

.._ P1_A1 _ ..

deve ser sample1 , porque quando olho para o arquivo .txt , é

Sample  P   R   Col
    1   1   A   1

para o .._ P1_A2 _ ..

deve ser sample2 , porque quando olho para o arquivo .txt , é

Sample  P   R   Col
    2   1   A   2
    
por Learner Algorithm 07.12.2016 / 11:55

1 resposta

4

Se pudermos assumir com segurança que todos os seus nomes são exclusivos, quero dizer que há apenas um arquivo cujo nome contém _P1_A1 , apenas um com _P1_A2 etc, você pode fazer isso:

$ awk 'NR>1{print "mv *_P""_""* sample"}' key.txt 
mv *_P1_A1* sample1
mv *_P1_A2* sample2
mv *_P1_A3* sample3

Awk lê sua entrada linha por linha e a divide em campos no espaço em branco. Portanto, o primeiro campo é , o segundo etc. Aqui, estamos processando o arquivo de chaves e imprimindo o comando mv correto construindo-o a partir dos campos do arquivo.

Se você tiver certeza de que os comandos mv impressos estão corretos, você poderá executá-los com:

awk 'NR>1{system("mv *_P""_""* sample")}' key.txt
    
por terdon 07.12.2016 / 12:43