Ayúdanos a seguir proporcionándote tutoriales gratuitos y de calidad desactivando tu bloqueador de anuncios. suscriptores a nuestro sitio.

Cómo eliminar el directorio y el sufijo final de los nombres de archivo en Linux

1 mar 2021 2 min di lettura
Cómo eliminar el directorio y el sufijo final de los nombres de archivo en Linux
Tabla de contenidos

Introducción

basename es una utilidad de línea de comandos que elimina el directorio y el sufijo final de los nombres de archivo especificados.

Utilice el comando basename

El basename admite dos formatos de sintaxis:

basename NAME [SUFFIX]
 basename OPTION... NAME...

basename toma un nombre de archivo e imprime el último componente del nombre de archivo. También puede eliminar opcionalmente cualquier sufijo final. Es un comando simple que acepta solo algunas opciones.

El ejemplo más simple es imprimir el nombre del archivo con los directorios raíz eliminados:

basename /etc/passwd

La salida incluirá el nombre del archivo:

passwd

El basename elimina todos los caracteres /

basename /usr/local/
basename /usr/local

Ambos comandos producirán la misma salida:

local
 local

De forma predeterminada, cada línea de salida termina con un carácter de nueva línea. Para terminar líneas con NUL, use la -z ( --zero ).

Entradas múltiples

El basename puede tomar varios nombres como argumentos. Para hacer esto, invoque el comando con la -a ( --multiple ), seguida de la lista de archivos separados por espacios.

Por ejemplo, para obtener los nombres de archivo de /etc/passwd y /etc/shadow, debe ejecutar:

basename -a /etc/passwd /etc/shadow
passwd
 shadow

Eliminar un sufijo final

Para eliminar cualquier sufijo final del nombre de archivo, pase el sufijo como segundo argumento:

basename /etc/hostname name
name

Normalmente, esta función se utiliza para eliminar extensiones de archivo:

basename /etc/sysctl.conf.conf
sysctl

Otra forma de eliminar un sufijo final es especificar el sufijo con la opción -s --suffix=SUFFIX ):

basename -s.conf /etc/sysctl.conf
sysctl

Este módulo de sintaxis le permite eliminar cualquier sufijo final de varios nombres:

basename -a -s.conf /etc/sysctl.conf /etc/sudo.conf
sysctl
 sudo

Ejemplo

El siguiente ejemplo muestra cómo usar el basename dentro de un for para cambiar el nombre de todos los archivos que terminan con " .jpeg " en el directorio actual reemplazando la extensión de archivo de " .jpeg " a " .jpg ":

for file in *.jpeg; do
 mv -- "$file" "$(basename $file.jpeg).jpg"
 done

Si está utilizando bash como shell, en lugar de invocar el basename de base, puede utilizar strip de la extensión final (extensión final) utilizando Shell Parameter Expansion.

Conclusión

El basename elimina los directorios iniciales y los sufijos finales del nombre.

Apóyenos si le gusta nuestro contenido. Gracias.

Buy me a coffeeBuy me a coffee

Únase a la conversación

Apóyenos con una donación.

Genial! A continuación, complete el pago para obtener acceso completo a Noviello.it.
Bienvenido de nuevo! Has iniciado sesión correctamente.
Te has suscrito correctamente a Noviello.it.
Éxito! Su cuenta está completamente activada, ahora tiene acceso a todo el contenido.
Éxito! Su información de facturación ha sido actualizada.
Su facturación no se actualizó.