como alterar parte de um nome de arquivo para outra coisa em arquivos mutilple

1

Estou fazendo um jogo para ajudar a aprender comandos e tenho diretórios que terão o mesmo número de arquivos de diferentes tipos neles. Eu preciso ser capaz de alterar parte do nome do arquivo em cada diretório, de modo que significa que é feito um arquivo desse diretório.

por exemplo,

Nome do dir 1 "laranja" arquivo 1 nome: "water_orange.jpeg" arquivo 2 nome: 1_water_orange.jpeg " etc, etc 15 arquivos

Nome do dir 2 "Indigo" arquivo 1 nome: "water_indigo.jpeg" arquivo 2 nome: "1_water_indigo.jpeg" etc etc 15 arquivos

Eu tenho 7 diretórios com 15 arquivos em cada um e eu quero ver se é possível alterar a parte colorida do nome do arquivo em cada diretório, sem ter que usar o comando "mv" em cada arquivo individual.

Eu tentei o comando "echo sed" com aspas simples e duplas, mas sem sorte

i.e. echo sed "s / laranja / indigo / g" e echo sed 's / laranja / indigo / g'

qualquer ajuda sinceramente apreciada

    
por Edmuntu 16.11.2016 / 21:33

1 resposta

0

Algo como o seguinte deve funcionar:

for i in $(ls *.jpeg)
do 
mv -v $i $(ls $i | sed 's/orange/indigo/')
done

Mas esta muito sintaxe desajeitada pode ser enormemente melhorada, como sugeriu a Steeldriver nos comentários abaixo, com a seguinte sintaxe elegante:

for i in *.jpeg; do mv -v -- "$i" "${i/orange/indigo}"; done

Tenha em mente que ambos os exemplos são para diretórios únicos e não são recursivos ...

    
por andrew.46 16.11.2016 / 21:49