altere o nome do arquivo com o script e use os nomes anteriores

-2

Eu quero alterar vários nomes de arquivos com seus nomes anteriores usando um script, por exemplo, alterar os nomes dos arquivos conforme abaixo:

2015-08-25___LSA_SP_E_txt ---> 20150825.IT.SPE.LSA.txt 
2015-08-25___HSB_BH_Z_txt ---> 20150825.IT.BHZ.HSB.txt 
2015-08-25___TEH_SP_N_txt ---> 20150825.IT.SPN.TEH.txt 
2015-08-25___ANJ_BH_E_txt ---> 20150825.IT.BHE.ANJ.txt 
    
por MN65 13.02.2018 / 13:22

2 respostas

2

Uma maneira com rename :

rename -n 's/-//g;s/___(\w*)_(\w*)_(\w*)_/.IT.$2$3.$1./' *

No modo -n ono isso só imprime as alterações, remova esse sinalizador para executar a renomeação. A primeira expressão apenas remove cada hífen, a segunda salva as strings e substitui a parte de sublinhado.

Uma alternativa é salvar apenas tudo que você precisa em grupos, assim você também pode mudar rapidamente, por exemplo. a data:

rename -n 's/(\d*)-(\d*)-(\d*)___(\w*)_(\w*)_(\w*)_/$1$2$3.IT.$5$6.$4./' *

Exemplo de execução

$ rename -n 's/-//g;s/___(\w*)_(\w*)_(\w*)_/.IT.$2$3.$1./' *
rename(2015-08-25___ANJ_BH_E_txt, 20150825.IT.BHE.ANJ.txt)
rename(2015-08-25___HSB_BH_Z_txt, 20150825.IT.BHZ.HSB.txt)
rename(2015-08-25___LSA_SP_E_txt, 20150825.IT.SPE.LSA.txt)
rename(2015-08-25___TEH_SP_N_txt, 20150825.IT.SPN.TEH.txt)
    
por dessert 13.02.2018 / 13:51
2

Script Bash (script.sh) para renomear vários arquivos.

#!/bin/bash
INPUT="$1"
IFS=,
[ ! -f "$INPUT" ] && { echo "$INPUT file not found"; exit 99; }
while read old_name new_name
do
rename "$old_name" "$new_name" # mv or rename
done < "$INPUT"

Formato de arquivo Input.txt:

old_name1.txt,new_name1.txt
old_name2.txt,new_name2.txt

Uso:

bash script.sh input.txt
    
por arupgsh 13.02.2018 / 13:27