Então eu tenho um diretório com pastas aninhadas e, em algum momento, há .png
imagens.
A nomeação dessas imagens é assim "letters_numbers_numbers_letters.png", e quero excluir o sublinhado entre os números.
Digamos que temos um arquivo chamado a_1_2_b.png
, quero renomeá-lo para a_12_b.png
. Eu sei que tenho que usar algo como:
find . -name "*[0-9]_[0-9]* -type f -exec bash -c <enter_code here>`
mas não sei como especificar como excluir esse sublinhado específico. Lembre-se de que há dois outros sublinhados que não quero tocar.
Desde já, obrigado!
Use uma das variantes de
perl
'srename
. Por exemplo, com aquele (rename
pacote em sistemas semelhantes ao Debian):(remova o
-n
(dry-run) quando feliz).Com
zsh
, você poderia fazer:É um pouco mais complicado, pois não há equivalente dos operadores regexp de perl em zsh globs.
Esses removem todos os
_
s que estão cercados por dígitos no nome de cada arquivo regular (renomearia odir_1_2_3/file_1_2_foo_22_3_4_bar
arquivo paradir_1_2_3/file_12_foo_2234_bar
, por exemplo).Para remover apenas o segundo
_
em arquivos regulares que seguem oletters_digits_digits_letters.png
padrão, isso seria apenas: