Preciso renomear nomes de arquivos que começam com "foo" para "boo"
Este é o script que usei
#!/bin/sh
for f in *.jpg;
do
mv -- "{$f}" "${f/foo/boo}";
done
mas quando executo recebo um erro de substituição incorreto. qual é o problema no meu código?
Responder1
Você está usando /bin/sh
como um shell, que parece aceitar apenas recursos simples do sh. Recursos avançados como ${//}
extensões estão disponíveis apenas em shells como o bash.
Basta mudar seu shebang e tudo deve funcionar.
Também dê uma olhada em man rename
(às vezes chamado prename
de onde rename
está o do util-linux). Isso deve fazer exatamente o que você precisa:
rename 's/^foo/boo/' foo*.jpg
Se você usou /bin/sh
intencionalmente, você pode usar:
mv -- "$f" "boo${f#foo}"
Dê uma olhada em man sh para obter detalhes.