Quiero cambiar los nombres de los archivos y este cambio está en el medio. Básicamente necesito eliminar una parte de la variable y escribir algo más.
He intentado esto:
$ls
casts.c endian.c ptr.c signed-unsigned-representations.c signed-unsigned.c test-hard-link.c
$for i in *.c;do mv "$i" "$i"__swa.c; done
$ls
casts.c<strong>swa.c endian.c</strong>swa.c ptr.c<strong>swa.c signed-unsigned-representations.c</strong>swa.c signed-unsigned.c<strong>swa.c test-hard-link.c</strong>swa.c
y sé que esto sucede porque mi variable i es *.c, por lo que cuando intento renombrar y agregar la parte (__swa.c), simplemente se agrega al nombre de la variable.
Necesito que los archivos sean renombrados así:
casts__swa.c endian__swa.c ptr__swa.c signed-unsigned-representations__swa.c signed-unsigned__swa.c test-hard-link__swa.c
davy.ai
Para lograr el formato deseado del nombre de archivo, puede modificar el comando de bucle de la siguiente manera:
Explicación:
–
${i%%.c}
elimina la extensión.c
del nombre de archivo actual almacenado en la variablei
–
"${i%%.c}__swa.c"
concatena el nombre de archivo modificado con la cadena__swa.c
, creando el formato de nombre de archivo deseado.Este comando de bucle cambiará el nombre de todos los archivos
.c
en el directorio actual al formato especificado.