Leggi il nome file senza estensione in bash

Leggi il nome file senza estensione in bash
Gli utenti di Linux devono lavorare regolarmente con i file per molti scopi. A volte gli utenti devono leggere il basename del file solo rimuovendo l'estensione del file. Il nome file ed estensione possono essere separati e memorizzati su diverse variabili in Linux in più modi. L'espansione del parametro di comando e shell bash può essere utilizzata per rimuovere l'estensione del file. In questo tutorial è spiegato come il nome file senza estensione utilizzando i modi sopra menzionati.

Utilizzo del comando 'basename' per leggere il nome file

Il comando "Basename" viene utilizzato per leggere il nome del file senza estensione da una directory o percorso del file.

Sintassi:

Nome basename [Suffix]

O

Opzione basename ... nome ..

Qui, il nome può contenere il nome file o il nome file con percorso completo. Il suffisso è facoltativo e contiene la parte di estensione del file che l'utente desidera rimuovere. Il comando "Basename" ha alcune opzioni descritte di seguito.

Opzioni

Nome Descrizione
-UN Viene utilizzato per passare più filazioni con percorso o senza percorso come argomenti di comando.
-S Viene utilizzato per passare l'estensione come suffisso che deve rimuovere.
-z Viene utilizzato per visualizzare i file di file più separando ciascun file con null.
-aiuto Viene utilizzato per visualizzare le informazioni sull'utilizzo del comando "basename".
-versione Viene utilizzato per visualizzare le informazioni sulla versione.

Esempio-1: usando il nome e il suffisso

Il seguente comando "Basename" recupererà il nome file con estensione. Il suffisso viene omesso da questo comando. Qui, l'output è 'Prodotto.TXT'.

$ basename/home/fahmida/codice/prodotto.TXT

Se si desidera recuperare il nome file senza estensione, è necessario fornire l'estensione del file come suffisso con il comando "basename". Qui, l'estensione è ".TXT". Esegui il comando seguente per rimuovere l'estensione dal file.

$ basename/home/fahmida/codice/prodotto.TXT .TXT

Esempio-2: usando l'opzione e il nome "-a"

L'uso dell'opzione "-a" del comando "basename" è mostrato in questo esempio. Qui, due percorsi di file vengono passati come argomenti con il comando "basename". Ogni nome file con estensione recupererà dal percorso e stamperà da Newline.

$ basename -a/home/fahmida/indice.html/home/fahmida/codice/emp.TXT

Esempio-3: usando l'opzione e il nome "-Z"

L'opzione '-Z' viene utilizzata con il comando 'Basename' per stampare i file di file multipli con valore null invece di Newline. Il seguente comando utilizza due opzioni insieme, '-a' e '-z'. Qui, due file di file, indice.html E Emp.TXT Stamparrà senza spazio o newline.

$ basename -az/home/fahmida/indice.html/home/fahmida/codice/emp.TXT

Esempio-4: usando l'opzione e il nome "

Il seguente comando può essere usato come alternativa di suffisso con "basename". L'estensione del file deve passare con l'opzione '-sh' per rimuovere l'estensione del file dal file. L'esempio seguente rimuoverà l'estensione, "-sh" dal file, "aggiunta.sh'.

$ Basename -S .aggiunta SH.sh

Esempio-5: rimuovere l'estensione del file senza suffisso

Se non conosci l'estensione del file che si desidera rimuovere dal nome file, questo esempio ti aiuterà a risolvere il problema. Crea un file denominato read_file.sh con il seguente codice per recuperare il nome file di qualsiasi estensione. Il comando 'sed' viene utilizzato in questo esempio per rimuovere qualsiasi tipo di estensione dal nome file. Se si esegue lo script, l'output sarà 'media'Dopo aver rimosso l'estensione'Py'.

read_file.sh

#!/Bin/Bash
# Imposta il nome file con il percorso
filename = "/home/fahmida/codice/media.Py "
# Leggi il nome file senza estensione usando il comando "basname" e "sed"
Echo "$ (basename" $ ​​fileName "| sed 's/\ (.*\) \… */\ 1/') "

Esegui lo script.

$ bash read_file.sh

Esempio-6: converti l'estensione del file da txt a docx

Il nome file senza estensione deve convertire il file da un'estensione a un'altra. Questo esempio mostra che come è possibile modificare l'estensione di tutti i file di testo (.txt) nei file Word (.docx) usando il comando "basename" nello script bash. Crea un file denominato, convert_file.sh con il seguente codice. Qui, un loop per in-in viene utilizzato per leggere tutti i file di testo con ".TXT" Estensione dalla directory corrente. Il nome file senza estensione viene letto dal comando "basename" e rinominato aggiungendo ".Estensione DOCX "in ogni iterazione del loop.

convert_file.sh

#!/Bin/Bash
# Il loop leggerà ogni file di testo dalla directory corrente
per il nome file in 'ls *.TXT'
Fare
# Stampa il nome file di testo prima della conversione
Echo "FileName prima della conversione: $ nome file"
# Modifica l'estensione del file txt su docx
MV - "$ fileName" "$ (basename -" $ nome file " .TXT).docx "
Fatto

Esegui lo script.

$ bash convert_file.sh

Controllare che i file di testo vengono convertiti o meno utilizzando il comando "LS".

$ ls

Esempio-7: leggi il nome file senza estensione usando l'espansione dei parametri shell

L'espansione del parametro shell è un altro modo per leggere il nome file senza estensione in bash. Questo esempio mostra gli usi dell'espansione dei parametri della shell. Il comando seguente memorizzerà il percorso del file nella variabile, $nome del file.

$ fileName = "/var/usr/temp/myfile.catrame.GZ "

Il comando seguente rimuoverà tutti i tipi di estensione dal percorso e memorizzerà il percorso del file senza estensione nella variabile, $ file1.

$ file1 = "$ fileName %%.* "

Il seguente comando stamperà il nome file solo dal percorso. Qui, l'output lo farà 'il mio file'.

$ echo "$ file1 ##*/"

Se il nome file contiene due estensioni con due punti (.) e si desidera leggere il nome file rimuovendo l'ultima estensione del file, quindi è necessario utilizzare il comando seguente. Esegui il seguente comando che memorizza il percorso del file nella variabile, $ file2 rimuovendo l'ultima estensione del file.

$ file2 = "$ fileName%.* "

Ora, esegui il comando seguente per stampare il nome file con un punto (.) estensione. Qui, l'output sarà "il mio file.catrame".

$ echo "$ file2 ##*/"

Conclusione

Il nome file senza estensione è richiesto per vari scopi. Alcuni usi del nome file senza estensione sono spiegati in questo tutorial utilizzando alcuni esempi come la conversione dei file. Questo tutorial aiuterà quegli utenti che sono interessati ad apprendere i modi per separare il nome e l'estensione del file dal percorso del file. Sono spiegati due modi qui. L'utente può seguire uno di questi modi per estrarre il nome file solo dal percorso del file.