Lea el nombre de archivo sin extensión en Bash

Lea el nombre de archivo sin extensión en Bash
Los usuarios de Linux deben trabajar con archivos regularmente para muchos fines. A veces, los usuarios necesitan leer el nombre de base del archivo solo eliminando la extensión del archivo. El nombre de archivo y la extensión se pueden separar y almacenar en diferentes variables en Linux por múltiples maneras. El comando incorporado de la expansión de parámetros de shell se puede usar para eliminar la extensión del archivo. Cómo se puede leer el nombre de archivo sin extensión utilizando las formas mencionadas anteriormente se explica en este tutorial.

Uso del comando 'BaseName' para leer el nombre de archivo

El comando 'Basename' se usa para leer el nombre del archivo sin extensión desde una ruta de directorio o archivo.

Sintaxis:

nombre de nombre de base [sufijo]

o

opción de nombre de base ... nombre ..

Aquí, el nombre puede contener el nombre de archivo o el nombre de archivo con ruta completa. El sufijo es opcional y contiene la parte de extensión del archivo que el usuario desea eliminar. El comando 'Basename' tiene algunas opciones que se describen a continuación.

Opción

Nombre Descripción
-a Se usa para pasar múltiples nombres de archivo con ruta o sin ruta como argumentos de comando.
-s Se usa para pasar la extensión como sufijo que necesita eliminar.
-z Se usa para mostrar los múltiples nombres de archivo separando cada archivo con NULL.
-ayuda Se utiliza para mostrar la información del comando 'Basename'.
-versión Se utiliza para mostrar la información de la versión.

Ejemplo-1: Usando nombre y sufijo

El siguiente comando 'BaseName' recuperará el nombre de archivo con extensión. Se omite el sufijo de este comando. Aquí, la salida es 'producto.TXT'.

$ Basename/Home/Fahmida/Code/Product.TXT

Si desea recuperar el nombre de archivo sin extensión, entonces debe proporcionar la extensión del archivo como sufijo con el comando 'BaseName'. Aquí, la extensión es ".TXT". Ejecute el siguiente comando para eliminar la extensión del archivo.

$ Basename/Home/Fahmida/Code/Product.TXT .TXT

Ejemplo-2: usando la opción y el nombre '-a'

El uso del comando '-A' del comando 'BaseName' se muestra en este ejemplo. Aquí, se pasan dos rutas de archivo como argumentos con el comando 'BaseName'. Cada nombre de archivo con extensión se recuperará de la ruta e imprimirá por Newline.

$ Basename -A/Home/Fahmida/Index.HTML/HOME/FAHMIDA/CODE/EMP.TXT

Ejemplo-3: usando la opción y el nombre '-Z'

La opción '-z' se usa con el comando 'BaseName' para imprimir los múltiples nombres de archivo con valor nulo en lugar de Newline. El siguiente comando usa dos opciones juntas, '-a' y '-z'. Aquí, dos nombres de archivo, índice.html y Embem.TXT imprimirá sin espacio o nueva línea.

$ Basename -az/Home/Fahmida/Index.HTML/HOME/FAHMIDA/CODE/EMP.TXT

Ejemplo-4: usando la opción y el nombre '-s'

El siguiente comando se puede usar como una alternativa de sufijo con 'Basename'. La extensión del archivo debe pasar con la opción '-sh' para eliminar la extensión del archivo del archivo. El siguiente ejemplo eliminará la extensión, '-sh' del archivo ', adición.mierda.

$ Basename -S .SH adición.mierda

Ejemplo-5: eliminar la extensión del archivo sin sufijo

Si no conoce la extensión del archivo que desea eliminar del nombre de archivo, este ejemplo lo ayudará a resolver el problema. Crea un archivo llamado Read_file.mierda con el siguiente código para recuperar el nombre de archivo de cualquier extensión. El comando 'sed' se usa en este ejemplo para eliminar cualquier tipo de extensión del nombre de archivo. Si ejecuta el script, la salida será 'promedio'Después de eliminar la extensión'py'.

Read_file.mierda

#!/bin/bash
# Establezca el nombre de archivo con ruta
filename = "/home/fahmida/code/promedio.py "
# Lea el nombre de archivo sin extensión utilizando el comando 'BASNAME' y 'SED'
echo "$ (nombre de base" $ nombre de archivo "| Sed 's/\ (.*\) \ ... */\ 1/') "

Ejecutar el guión.

$ bash read_file.mierda

Ejemplo-6: Convertir la extensión del archivo de TXT a DOCX

El nombre de archivo sin extensión necesita convertir el archivo de una extensión a otra. Este ejemplo muestra que cómo puede cambiar la extensión de todos los archivos de texto (.txt) en los archivos de la palabra (.docx) usando el comando 'Basename' en el script bash. Crea un archivo llamado, convertir_file.mierda Con el siguiente código. Aquí, se usa un bucle for-in para leer todos los archivos de texto con ".TXT" extensión del directorio actual. El nombre de archivo sin extensión se lee mediante el comando 'BaseName' y se renombra al agregar ".DOCX ”Extensión en cada iteración del bucle.

convertir_file.mierda

#!/bin/bash
# El bucle leerá cada archivo de texto del directorio actual
para el nombre de archivo en 'ls *.TXT'
hacer
# Imprima el nombre de archivo de texto antes de la conversión
echo "nombre de archivo antes de conversión: $ nombre de archivo"
# Cambie la extensión del archivo TXT a DOCX
MV - "$ FileName" "$ (BaseName -" $ FileName " .TXT).docx "
hecho

Ejecutar el guión.

$ bash convert_file.mierda

Verifique que los archivos de texto se conviertan o no utilizando el comando 'LS'.

$ LS

Ejemplo-7: Lea el nombre de archivo sin extensión utilizando la expansión del parámetro de shell

La expansión del parámetro de shell es otra forma de leer el nombre de archivo sin extensión en Bash. Este ejemplo muestra los usos de la expansión de los parámetros de shell. El siguiente comando almacenará el nombre de ruta del archivo en la variable, $Nombre del archivo.

$ filename = "/var/usr/temp/myfile.alquitrán.GZ "

El siguiente comando eliminará todos los tipos de extensión de la ruta y almacenará la ruta del archivo sin extensión en la variable, $ Archivo1.

$ file1 = "$ FileName %%.* "

El siguiente comando imprimirá el nombre de archivo solo desde la ruta. Aquí, la salida será 'mi archivo'.

$ echo "$ file1 ##*/"

Si el nombre de archivo contiene dos extensiones con dos puntos (.) y desea leer el nombre de archivo eliminando la última extensión del archivo, entonces debe usar el siguiente comando. Ejecute el siguiente comando que almacene la ruta del archivo en la variable, $ file2 eliminando la última extensión del archivo.

$ file2 = "$ FileName%.* "

Ahora, ejecute el siguiente comando para imprimir el nombre de archivo con un punto (.) extensión. Aquí, la salida será "mi archivo.alquitrán".

$ echo "$ file2 ##*/"

Conclusión

Se requiere nombre de archivo sin extensión para diversos fines. Algunos usos del nombre de archivo sin extensión se explican en este tutorial mediante el uso de algunos ejemplos, como la conversión de archivos. Este tutorial ayudará a aquellos usuarios que estén interesados ​​en aprender las formas de separar el nombre y la extensión del archivo de la ruta del archivo. Dos maneras se explican aquí. El usuario puede seguir cualquiera de estas formas de extraer el nombre de archivo solo de la ruta del archivo.