Renomeando todos os arquivos na pasta no Bash [duplicado]

0

Como renomear todos os arquivos no diretório de forma que os arquivos sejam adicionados "_1" antes de ".txt"

apac_02_aug_2017_file.txt
emea_02_May_2017_file.txt
ger__02_Jun_2017_file.txt

Para

apac_02_aug_2017_file_1.txt
emea_02_May_2017_file_1.txt
ger__02_Jun_2017_file_1.txt
    
por Nirmal 04.08.2017 / 07:25

2 respostas

4

Com renomear

rename .txt _1.txt * deve fazer o que você está procurando.

Para citar man rename :

rename [options] expression replacement file...

rename will rename the specified files by replacing the first occurrence of expression in their name by replacement.

Com comandos bash comuns

Como você disse que rename não está instalado em seu sistema, veja uma solução que usa mais Bash padrão:

for file in *.txt; do
    mv "$file" "${file%.txt}_1.txt"
done

Explicação: Fazemos o loop de todos os arquivos. Para cada arquivo, nós o movemos para o local correto, fazendo uso de algo chamado "expansão de parâmetro" (essa é a parte ${} ). O caractere especial % pode ser usado na expansão do parâmetro para corresponder a um padrão no final da string e excluí-lo.

Para mais informações, consulte: link

    
por 04.08.2017 / 07:50
0

Através de mmv , é fácil:

mmv '*.*' '#1_1.#2' *.txt
    
por 04.08.2017 / 09:17

Tags