GNU/Linux >> Tutoriales Linux >  >> Linux

Uso del comando Linux Basename en Bash Scripts

El comando basename en Linux imprime el componente final en una ruta de archivo. Esto es particularmente útil en scripts de bash en los que desea extraer el nombre de archivo de la ruta de archivo larga.

Déjame mostrártelo con algunos ejemplos.

Comando de nombre base

El comando basename tiene dos tipos de sintaxis. El primero involucra un sufijo:

basename PATH [suffix]

El segundo le permite agregar opciones:

basename OPTION PATH

No puede combinar las opciones con sufijo. No se confunda todavía. Sigue los ejemplos y entonces entenderás lo que quiero decir.

El uso del comando basename con una ruta de archivo dará el nombre de archivo:

basename /home/user/data/filename.txt
filename.txt

El comando basename es bastante estúpido en realidad. Realmente no reconoce la ruta del archivo. Solo busca las barras inclinadas (/) e imprime lo que sea que esté después de la última barra inclinada.

Por ejemplo, si ejecuto el ejemplo anterior eliminando el nombre del archivo, esto es lo que arrojará.

basename /home/user/data
data

Eliminar extensión de archivo con sufijo

El uso principal del comando bash es extraer el nombre del archivo de la ruta del archivo. También puede eliminar la extensión del archivo mientras extrae el nombre del archivo.

Simplemente mencione lo que desea eliminar del final de la salida. Entonces, digamos que desea eliminar el .txt de filename.txt. Simplemente agréguelo al final del comando basename:

basename /home/user/data/filename.txt .txt
filename

También puede usar la opción -s para el sufijo:

basename -s .txt /home/user/data/filename.txt
filename

El sufijo se elimina del final del componente final de la entrada. Realmente no determina la extensión del archivo. Si proporciona txt (sin el punto) en lugar de .txt, obtendrá 'nombre de archivo' (con el punto al final).

Además, si proporciona un sufijo que no está al final del componente, la salida permanece como si no hubiera sufijo.

basename /home/user/data/filename.txt name
filename.txt

Usando basename con múltiples rutas

Con la opción -a , puede usar varias rutas simultáneamente.

basename -a /home/user/data/filename1.txt /home/user/data/filename2.txt
filename1.txt
filename2.txt

Puede usar la opción de sufijo -s con -a pero con algunas limitaciones. Solo puede proporcionar un sufijo para todas las rutas de archivo.

basename -as .txt /home/user/data/filename1.txt /home/user/data/filename2.txt
filename1
filename2

No puede asignar suficiencias individuales. No funcionará.

También puede separar la salida con NULL en lugar de la nueva línea con -z opción.

Uso de basename en bash script

Mostré algunos ejemplos del comando basename. Veamos un par de ejemplos de nombre base en scripts bash.

Suponga que tiene una variable de ruta de archivo y desea almacenar el nombre de archivo de la ruta en una variable. Este podría ser un script simple:

pathname="/home/dir/data/filename"

result=$(basename "$pathname")

echo $result

Otro ejemplo es donde desea cambiar el nombre de las extensiones de archivo. Por supuesto, puede usar el comando de cambio de nombre para cambiar el nombre de los archivos por lotes, pero esto es solo un ejemplo.

Entonces, escribí este script de muestra con el propósito de reemplazar las extensiones de archivo:

for file in *$1; do
if [ -f $file ]; then
 mv $file `basename $file .$1`.$2
fi
done

¿Notaste que marqué si es un archivo o no en el script bash para que no cambie un directorio coincidente?

Puede usar el script anterior de esta manera:

./myscript.sh html htm

Y cambiará el nombre de todos los archivos en el directorio actual con html al final a htm.

Estos fueron solo algunos ejemplos. Puede usarlo según sus requisitos.

El comando basename se complementa con el comando dirname. A diferencia de basename, el comando dirname imprime toda la ruta excepto el último componente.

Espero que les haya gustado este tutorial. Como siempre, no dude en hacer preguntas o brindar sugerencias en la sección de comentarios.


Linux
  1. Comando de cola de Linux

  2. Usando el comando de suspensión de Linux en Bash Scripts

  3. Comando wc de linux

  4. Comando grep de Linux

  5. Cómo dividir iso o archivo usando el comando 'dividir' en Linux

Comando de historial en Linux (Bash History)

Comando de nombre base en Linux

Uso de Cat Command en Linux con ejemplos

Cómo usar el comando echo en Bash Scripts en Linux

Usando el comando Watch en Linux

Usando el comando Dirname de Linux en Bash Scripts