basename
es una utilidad de línea de comandos que elimina el directorio y el sufijo final de los nombres de archivo dados.
Usando el basename
Comando #
El basename
El comando 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. Opcionalmente, también puede eliminar cualquier sufijo final. Es un comando simple que acepta solo unas pocas opciones.
El ejemplo más básico es imprimir el nombre del archivo con los directorios principales eliminados:
basename /etc/passwd
La salida incluirá el nombre del archivo:
passwd
shadow
El basename
el comando elimina cualquier /
final caracteres:
basename /usr/local/
basename /usr/local
Ambos comandos producirán el mismo resultado:
local
local
De forma predeterminada, cada línea de salida termina en un carácter de nueva línea. Para terminar las líneas con NUL
, use el -z
(--zero
) opción.
Múltiples entradas #
El basename
El comando puede aceptar múltiples nombres como argumentos. Para hacerlo, invoque el comando con -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
ejecutarías:
basename -a /etc/passwd /etc/shadow
passwd
shadow
Eliminación de un sufijo final #
Para eliminar cualquier sufijo final del nombre del archivo, pase el sufijo como segundo argumento:
basename /etc/hostname name
host
Generalmente, esta característica se usa para eliminar las extensiones de archivo:
basename /etc/sysctl.conf .conf
sysctl
Otra forma de eliminar un sufijo final es especificar el sufijo con -s
(--suffix=SUFFIX
) opción:
basename -s .conf /etc/sysctl.conf
sysctl
Esta forma 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
comando dentro de bash for
looppara 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 basename
, puede quitar la extensión final usando la Expansión de parámetros de shell.
Conclusión #
El basename
El comando elimina cualquier directorio inicial y sufijo final del nombre.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.