No seu caso específico, você pode usar o seguinte bash
comando ( bash
é o shell padrão no macOS):
for f in *.png; do echo mv "$f" "${f/_*_/_}"; done
Nota: Se houver uma chance de os nomes dos seus arquivos começarem -
, coloque --
diante deles [1]:
mv -- "$f" "${f/_*_/_}"
Nota: echo
é anexado a mv
para executar uma execução a seco. Remova-o para executar a renomeação real.
Você pode executá-lo na linha de comando ou usá-lo em um script.
"${f/_*_/_}"
é uma aplicação de bash
expansão de parâmetro : o (primeiro) padrão de correspondência de substring _*_
é substituído por literal _
, cortando efetivamente o token do meio do nome.
- Observe que
_*_
é um padrão (uma expressão curinga, também usada para globbing), não uma expressão regular (para aprender sobre padrões, executar man bash
e procurar Pattern Matching
).
Se você renomear arquivos em lote com frequência, considere instalar uma ferramenta especializada, como o rename
utilitário baseado em Perl . No macOS, você pode instalá-lo usando o popular gerenciador de pacotes Homebrew , da seguinte maneira:
brew install rename
Aqui está o equivalente ao comando no topo usando rename
:
rename -n -e 's/_.*_/_/' *.png
Novamente, este comando executa uma execução a seco; remove -n
para executar a renomeação real.
- Semelhante à
bash
solução, s/.../.../
executa a substituição de texto, mas - ao contrário de bash
- expressões regulares verdadeiras são usadas.
[1] A finalidade do argumento especial --
, que é apoiado pela maioria dos serviços públicos, é para sinalizar que os argumentos subsequentes devem ser tratados como operandos (valores), mesmo se eles olham como opções devido a começar -
, como Jacob C. notas.