Como posso renomear um conjunto de diretórios dada a lista de novos nomes?

0

Gostaria de renomear meus diretórios seguindo uma lista de novos nomes.

Estou imaginando que o hoc pode aproveitar o uso do seguinte comando para renomear um conjunto de diretórios que estão no mesmo diretório principal.

find . -type d -name 'thefoldername*' -exec mv {} newfoldername \;

Os nomes dos diretórios atuais são:

Actual_folder_names=['archery','benchpressing','bikingthroughsnow','blowingoutcandles','bowling','brushingteeth','cleanandjerk','divingcliff','drummingfingers','golfchipping','golfdriving']

mude para:

new_folder_name=['Archery' ,'BenchPress' ,'Biking' ,'BlowingCandles' ,'Bowling' ,'BrushingTeeth','CleanAndJerk' ,'Diving' ,'Drumming'
,'GolfSwing1', 'GolfSwing2']

Obrigado

    
por Joseph 23.01.2018 / 16:26

1 resposta

2

Você pode simplesmente colocar as duas listas de nomes em arquivos de texto para fazer a renomeação da seguinte forma:

Crie as duas listas

echo "'archery','benchpressing','bikingthroughsnow','blowingoutcandles','bowling','brushingteeth','cleanandjerk','divingcliff','drummingfingers','golfchipping','golfdriving'" |sed -e "s/'//g ; s/,/\n/g" > listorig
echo "'Archery' ,'BenchPress' ,'Biking' ,'BlowingCandles' ,'Bowling' ,'BrushingTeeth','CleanAndJerk' ,'Diving' ,'Drumming','GolfSwing1', 'GolfSwing2'" |sed -e "s/'//g ; s/,/\n/g" > listdest

Coloque as duas listas lado a lado e faça o trabalho no modo "Execução a seco"

paste listorig listdest | awk '{print "mv " $0}'

Se o cheque estiver bom, realmente faça o trabalho:

paste listorig listdest | awk '{print "mv " $0}' |sh 

E o trabalho está feito:)

    
por Bertrand Cebador 23.01.2018 / 17:20