Tentando encontrar certos arquivos de forma recursiva e alterar o nome do arquivo

2

Estou tentando pesquisar recursivamente em todas as subpastas os arquivos com pontos dentro do nome do arquivo e remover os pontos (exceto o último)

O comando rename funciona sozinho, o comando find também, mas eles não estão trabalhando juntos:

find ./ -type f -execdir rename -n 's/\.(?=[^.]*\.)//g' *.txt \;
    
por Henry 13.02.2018 / 10:55

1 resposta

1

Um glob em um comando -execdir não funcionará, é melhor deixar find procurar os arquivos desejados e executar rename apenas neles:

find ./ -type f -name "*.txt" -exec rename -n 's/\.(?=[^.]*\.)//g' {} \;

A expressão rename não funciona com caminhos, tente isso:

find ./ -type f -name "*.txt" -exec rename -n 's:\.(?=[^./]*\.)::g' {} \;
    
por dessert 13.02.2018 / 11:21