Cómo cambiar el nombre de una gran cantidad de archivos y eliminar la extensión

Cómo cambiar el nombre de una gran cantidad de archivos y eliminar la extensión

Necesito cambiar el nombre de los archivos siguientes. Solo quiero eliminar .job-209675los nombres de archivos que comienzan con SOApero manteniendo intactos los nombres de archivos originales ya que hay otros archivos en este directorio.

por ejemplo
Antes: ./SOA_990377897NW0001_1557340549734.xml.job-2074645
Después:./SOA_990377897NW0001_1557340549734.xml

Respuesta1

Si una variable, filenamecontiene uno de los nombres de sus archivos, entonces ${filename%.job-*}sería el nombre sin el bit después del último punto.

Para recorrer los nombres de archivos y cambiar el nombre de cada uno por turno,

for filename in SOA_*.job-*; do
    echo mv -i "$filename" "${filename%.job-*}"
done

Está echoahí para protegerse. Debes ejecutar el bucle una vez e inspeccionar la salida, luego eliminarlo echosi crees que es correcto. La -iopción mvhace que solicite confirmación antes de sobrescribir un archivo existente.

Esto supone que todos los archivos relevantes (y nada más) coinciden con el SOA_*.job-*patrón.

información relacionada