Como substituir o símbolo em multiplefiles? [duplicado]

0

Eu tenho muitos arquivos no diretório (com pastas, então eu acho que a solução deve ser recursiva em profundidade)

  • pasta raiz
    • file-1.png
    • arquivo-2.png
    • file-3.png
    • arquivo-4.png
    • file-5.png
    • pasta-1
      • file-1.png
      • arquivo-2.png
      • file-3.png

Eu preciso renomear todos os arquivos, que contêm - character para _ .

file-1.png -> file_1.png

Mas. Eu tenho pouca observação. folder-1 e root-folder não devem ser afetados.

Como eu posso fazer isso?

    
por deathember 25.11.2015 / 14:51

2 respostas

0

Usando o comando find e o comando renomear perl:

find . -depth -name "*-*" -execdir prename -v s/-/_/g {} +
    
por geirha 25.11.2015 / 16:07
-1

Você faz algo assim:

#! /bin/bash

ROOT_DIR=$1

cd "$ROOT_DIR"
IFS="
"
for file in $(find -type f)
do
    mv -v "$file" "$(echo $file | sed -e 's#-#_#g')"
done
unset IFS
cd -

Assumindo que esse script é chamado "my-rename.sh". Chame assim:

$ ./my-rename.sh <path-to-root-folder>

O único truque para usar este script é que, se algum diretório pai tiver "-" em seu nome, você também o alterará. Você certamente pode lidar com isso, mas a resposta se tornaria muito complexa e a solução real seria perdida no meio dela.

Isso faz o truque? Deixe-me saber se você tem outras dúvidas.

Felicidades!

    
por Luiz Eduardo Guida Valmont 25.11.2015 / 15:23