
Necesito cambiar el nombre de los archivos siguientes. Solo quiero eliminar .job-209675
los nombres de archivos que comienzan con SOA
pero 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, filename
contiene 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á echo
ahí para protegerse. Debes ejecutar el bucle una vez e inspeccionar la salida, luego eliminarlo echo
si crees que es correcto. La -i
opción mv
hace 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.