GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo cambiar la extensión de varios archivos?

Me gustaría cambiar la extensión de un archivo de *.txt a *.text . Intenté usar el basename comando, pero tengo problemas para cambiar más de un archivo.

Aquí está mi código:

files=`ls -1 *.txt`

for x in $files
do
    mv $x "`basename $files .txt`.text"
done

Recibo este error:

basename: too many arguments Try basename --help' for more information

Respuesta aceptada:

Directamente de la wiki de Greg:

# Rename all *.txt to *.text
for f in *.txt; do 
    mv -- "$f" "${f%.txt}.text"
done

*.txt es un patrón global, usando * como comodín para coincidir con cualquier cadena. *.txt coincide con todos los nombres de archivo que terminan en '.txt'.

-- marca el final de la lista de opciones. Esto evita problemas con los nombres de archivos que comienzan con guiones.

${f%.txt} es una expansión de parámetros, reemplazada por el valor de f variable con .txt eliminado del final.

Consulte también la entrada sobre por qué no debe analizar ls .

Si tiene que usar basename , su sintaxis sería:

for f in *.txt; do
    mv -- "$f" "$(basename -- "$f" .txt).text"
done

Linux
  1. Cómo cambiar el idioma de cPanel

  2. Cómo cambiar el estilo de cPanel

  3. Cómo cambiar la identidad de un sistema Linux

  4. ¿Cómo encontrar múltiples cadenas en archivos?

  5. ¿Cómo cambiar el nombre de host?

Cómo cambiar recursivamente los permisos de archivos en Linux

Extensión de cambio de nombre de varios archivos de Linux

Cómo cambiar la contraseña de root en Linux

Cómo cambiar el nombre de host del servidor en Ubuntu

Cómo cambiar el puerto SSH en CentOS

¿Cómo cambiar la zona horaria en Ubuntu 18.04 Server?