Usando o comando find e o comando renomear perl:
find . -depth -name "*-*" -execdir prename -v s/-/_/g {} +
Eu tenho muitos arquivos no diretório (com pastas, então eu acho que a solução deve ser recursiva em profundidade)
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?
Usando o comando find e o comando renomear perl:
find . -depth -name "*-*" -execdir prename -v s/-/_/g {} +
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!