Tentando encontrar determinados arquivos recursivamente e alterar o nome do arquivo

Tentando encontrar determinados arquivos recursivamente e alterar o nome do arquivo

Estou tentando pesquisar recursivamente em todas as subpastas por 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 funcionando juntos:

find ./ -type f -execdir rename -n 's/\.(?=[^.]*\.)//g' *.txt \;

Responder1

Um glob em um -execdircomando não funcionará, é melhor findprocurar os arquivos desejados e executar renameapenas neles:

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

Acontece que sua renameexpressão não funciona com caminhos, tente isto:

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

informação relacionada