Llegiu el nom del fitxer sense extensió a Bash

Read Filename Without Extension Bash



Els usuaris de Linux han de treballar amb fitxers regularment per a molts propòsits. De vegades, els usuaris només necessiten llegir el nom base del fitxer eliminant l'extensió del fitxer. El nom de fitxer i l'extensió es poden separar i emmagatzemar en diferents variables a Linux de diverses maneres. L'ordre integrat de Bash i l'expansió dels paràmetres de l'intèrpret d'ordres es poden utilitzar per eliminar l'extensió del fitxer. En aquest tutorial s’explica com es pot llegir el nom de fitxer sense extensió mitjançant les formes esmentades anteriorment.

Utilitzant l'ordre `basename` per llegir el nom del fitxer

L'ordre 'basename' s'utilitza per llegir el nom del fitxer sense extensió des d'un directori o camí d'accés.







Sintaxi:



nom de baseNOM[SUFIX]

o bé



nom de baseOPCIÓ ... NOM ...

Aquí, NAME pot contenir el nom del fitxer o el nom del fitxer amb la ruta completa. SUFFIX és opcional i conté la part d'extensió de fitxer que l'usuari vol eliminar. L'ordre 'basename' té algunes opcions que es descriuen a continuació.





Opcions

Nom Descripció
-a S'utilitza per passar diversos noms de fitxer amb ruta o sense ruta com a arguments d'ordres.
-s S'utilitza per passar l'extensió com a sufix que cal eliminar.
-Amb S'utilitza per mostrar els múltiples noms de fitxer separant cada fitxer amb nul.
–Ajudar S'utilitza per mostrar la informació d'utilitzar l'ordre `basename`.
–Versió S'utilitza per mostrar la informació de la versió.

Exemple-1: utilitzant NAME i SUFFIX

L'ordre següent 'basename' recuperarà el nom del fitxer amb l'extensió. SUFFIX s'omet a aquesta ordre. Aquí, la sortida és 'Product.txt' .



$nom de base /a casa/fahmida/codi/product.txt

Si voleu recuperar el nom de fitxer sense extensió, heu de proporcionar l'extensió de fitxer com a SUFFIX amb l'ordre `basename`. Aquí, l'extensió és .txt. Executeu l'ordre següent per eliminar l'extensió del fitxer.

$nom de base /a casa/fahmida/codi/product.txt .txt

Exemple-2: mitjançant l'opció '-a' i NOM

En aquest exemple es mostra l’ús de l’opció ‘-a’ de l’ordre ‘basename`. Aquí es passen dos camins de fitxers com a arguments amb l'ordre `basename`. Cada nom de fitxer amb extensió es recuperarà del camí i s'imprimirà per línia nova.

$nom de base -a /a casa/fahmida/index.html/a casa/fahmida/codi/emp.txt

Exemple-3: mitjançant l'opció '-z' i NOM

L'opció '-z' s'utilitza amb l'ordre 'basename' per imprimir diversos noms de fitxer amb valor nul en lloc de línia nova. L'ordre següent utilitza dues opcions juntes, '-a' i '-z'. Aquí, dos noms de fitxer, index.html i emp.txt imprimirà sense cap espai ni línia nova.

$nom de base -la /a casa/fahmida/index.html/a casa/fahmida/codi/emp.txt

Exemple-4: mitjançant l'opció '-s' i NOM

L'ordre següent es pot utilitzar com a alternativa de SUFFIX amb `basename`. L’extensió de fitxer ha de passar amb l’opció ‘-sh’ per eliminar l’extensió del fitxer. L'exemple següent suprimirà l'extensió, '-sh' del fitxer, 'addition.sh'.

$nom de base -s.sh addició.sh

Exemple-5: elimineu l'extensió de fitxer sense SUFFIX

Si no coneixeu l'extensió del fitxer que voleu eliminar del nom del fitxer, aquest exemple us ajudarà a resoldre el problema. Creeu un fitxer anomenat read_file.sh amb el codi següent per recuperar el nom de fitxer de qualsevol extensió. L'ordre `sed` s'utilitza en aquest exemple per eliminar qualsevol tipus d'extensió del nom del fitxer. Si executeu l'script, la sortida serà ' mitjana 'Després d'eliminar l'extensió' py '.

read_file.sh

#! / bin / bash
# Definiu el nom del fitxer amb el camí d'accés
nom de l'arxiu='/Home/fahmida/code/average.py'
# Llegiu el nom del fitxer sense extensió mitjançant l'ordre 'basname' i 'sed'
trobo '$ (nom de base '$ filename' | sed 's / (. * ) .. * / 1 / ')'

Executeu l'script.

$bashread_file.sh

Exemple-6: converteix l'extensió de fitxer de txt a docx

El nom de fitxer sense extensió ha de convertir el fitxer d'una extensió a una altra. Aquest exemple mostra com es pot canviar l'extensió de tots els fitxers de text (.txt) a la paraula fitxers (.docx) mitjançant l'ordre `basename` a l'script bash. Creeu un fitxer anomenat, convert_file.sh amb el següent codi. Aquí s’utilitza un bucle d’introducció per llegir tots els fitxers de text .txt extensió del directori actual. El nom de fitxer sense extensió es llegeix amb l'ordre `basename` i es canvia el nom afegint l'extensió .docx a cada iteració del bucle.

convert_file.sh

#! / bin / bash
# el bucle llegirà cada fitxer de text del directori actual
pernom de l'arxiudins `ls *.txt`
fer
# Imprimiu el nom del fitxer de text abans de la conversió
trobo 'Nom del fitxer abans de la conversió:$ nom de fitxer'
# Canvieu l'extensió del fitxer txt a docx
mv - '$ nom de fitxer' '$ (basename - '$ filename' .txt).docx '
fet

Executeu l'script.

$bashconvert_file.sh

Comproveu que els fitxers de text es converteixin o no mitjançant l'ordre `ls`.

$ls

Exemple-7: llegiu el nom del fitxer sense extensió mitjançant l'expansió del paràmetre Shell

L'expansió dels paràmetres de l'intèrpret d'ordres és una altra manera de llegir el nom del fitxer sense extensió a bash. Aquest exemple mostra els usos de l'expansió dels paràmetres de l'intèrpret d'ordres. L'ordre següent emmagatzemarà el nom de ruta del fitxer a la variable $ nom de l'arxiu .

$nom de l'arxiu='/Var/usr/temp/myfile.tar.gz'

L'ordre següent eliminarà tots els tipus d'extensions del camí d'accés i emmagatzemarà el camí d'accés del fitxer sense extensió a la variable, $ file1 .

$fitxer1='$ {filename %%. *}'

L'ordre següent imprimirà el nom del fitxer només des del camí d'accés. Aquí, la sortida serà myfile '.

$trobo '$ {file1 ## * /}'

Si el nom del fitxer conté dues extensions amb dos punts (.) I voleu llegir el nom del fitxer eliminant l'última extensió del fitxer, heu d'utilitzar l'ordre següent. Executeu l'ordre següent que emmagatzema el camí d'accés del fitxer a la variable, $ file2 en eliminar l’última extensió del fitxer.

$fitxer2='$ {filename%. *}'

Ara, executeu l'ordre següent per imprimir el nom del fitxer amb una extensió de punt (.). Aquí, la sortida serà myfile.tar.

$trobo '$ {file2 ## * /}'

Conclusió

El nom del fitxer sense extensió és necessari per a diversos propòsits. Alguns usos del nom de fitxer sense extensió s’expliquen en aquest tutorial mitjançant alguns exemples, com ara la conversió de fitxers. Aquest tutorial ajudarà els usuaris interessats a conèixer les maneres de separar el nom i l'extensió del fitxer del camí d'accés. Aquí s’expliquen dues maneres. L'usuari pot seguir qualsevol d'aquestes maneres d'extreure el nom del fitxer només del camí d'accés del fitxer.