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
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 algunas 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
El basename
comando elimina los /
caracteres finales:
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 la opción -z
( ).--zero
Entradas Múltiples
El basename
comando puede aceptar varios nombres como argumentos. Para hacerlo, invoque el comando con la opción -a
( --multiple
), seguido de la lista de archivos separados por espacios.
Por ejemplo, para obtener los nombres de archivo de /etc/passwd
y /etc/shadow
ejecutaría:
basename -a /etc/passwd /etc/shadow
passwd
shadow
Eliminar 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 quitar extensiones de archivos:
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
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 un for
ciclo bash para cambiar el nombre de todos los archivos que terminan en ".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 su shell, en lugar de invocar basename
, puede usar strip the trailing extension usando Shell Parameter Expansion.
Conclusión
El basename
comando elimina cualquier directorio inicial y sufijo final del nombre.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.
0 Comentarios