Intentando encontrar ciertos archivos de forma recursiva y cambiar el nombre del archivo

Intentando encontrar ciertos archivos de forma recursiva y cambiar el nombre del archivo

Estoy intentando buscar recursivamente en todas las subcarpetas archivos que tengan puntos dentro de su nombre de archivo y eliminar los puntos (excepto el último).

El comando de cambio de nombre funciona por sí solo, el comando de búsqueda también, pero no funcionan juntos:

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

Respuesta1

Un globo en un -execdircomando no funcionará, mejor findbusque los archivos que desea y ejecútelos renamesolo en ellos:

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

Resulta que tu renameexpresión no funciona con rutas, prueba esto en su lugar:

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

información relacionada