basenamees una utilidad de línea de comandos que elimina el directorio y el sufijo final de los nombres de archivo dados.
Usando el basenamecomando
El basenamecomando admite dos formatos de sintaxis:
basename NAME [SUFFIX]
basename OPTION... NAME...
basenametoma 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/passwdLa salida incluirá el nombre del archivo:
passwd
El basenamecomando 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 basenamecomando 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/shadowpasswd
shadow
Eliminar un sufijo final
Para eliminar cualquier sufijo final del nombre del archivo, pase el sufijo como segundo argumento:
basename /etc/hostname namehost
Generalmente, esta característica se usa para quitar extensiones de archivos:
basename /etc/sysctl.conf .confsysctl
Otra forma de eliminar un sufijo final es especificar el sufijo con la opción -s( ):--suffix=SUFFIX
basename -s .conf /etc/sysctl.confsysctl
Esta forma de sintaxis le permite eliminar cualquier sufijo final de varios nombres:
basename -a -s .conf /etc/sysctl.conf /etc/sudo.confsysctl
sudo
Ejemplo
El siguiente ejemplo muestra cómo usar el basenamecomando dentro de un forciclo 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 basenamecomando elimina cualquier directorio inicial y sufijo final del nombre.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.

0 Comentarios