
Estou tentando substituir um guid sem hífens em alguns nomes de arquivos.
Eu fiz o regex, eu acho, mas não consigo fazer com que o escape correto ou os comandos de substituição funcionem uns com os outros.
Aqui está minha regex
https://regex101.com/r/SiqsjP/1
(-[0-9a-f]{32})
Com nomes de arquivos como este
iPhone6Plus-learn_multi_child-0dfb2dc71fe20da66ca47190d3136b12.png
eu vi essa respostaBash shell script para localizar e remover substring dentro de um nome de arquivomas não é exatamente a mesma coisa...
Acho que deveria funcionar, mas não reclama de erro?
newname=`echo "$filename" | sed -e 's/\([0-9a-f]{32}\)\.png/\1.png/'`
Responder1
Emsed BRE(expressões regulares básicas), você também deve escapar das chaves {}
:
newname=`echo "$filename" | sed 's/-[0-9a-f]\{32\}//g'`
Para mover/renomear o arquivo:
mv "$filename" "$newname"
Responder2
Usando manipulações de string no shell:
for name in *.png; do
# remove everything after the last '-' including the dash
# and add the '.png' extension back
newname="${name%-*}.png"
echo mv "$name" "$newname"
done
Isso pressupõe que todos os arquivos que você deseja renomear são .png
arquivos do diretório atual.
Execute isso uma vez e remova echo
se parecer que está fazendo a coisa certa.