es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el formato deseado del nombre de archivo, puede modificar el comando de bucle de la siguiente manera:

    $for i in *.c; do mv "$i" "${i%%.c}__swa.c"; done
    

    Explicación:
    ${i%%.c} elimina la extensión .c del nombre de archivo actual almacenado en la variable i
    "${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.

Comments are closed.