Introduzione
Esistono molti motivi per cui potresti voler estrarre il nome file e l'estensione di un file in Bash:
-
Per manipolare il nome o l'estensione del file – Potresti voler estrarre il nome del file o l'estensione per modificarlo, ad esempio aggiungendo un prefisso o un suffisso al nome del file o modificando l'estensione del file.
-
Per creare un file con un nome univoco – Potresti voler estrarre il nome del file e l'estensione per creare un nuovo file con un nome univoco, ad esempio aggiungendo un timestamp o un numero casuale al nome del file.
-
Per utilizzare il nome o l'estensione del file in uno script o comando – Potresti voler estrarre il nome del file o l'estensione per usarlo come argomento o input per uno script o comando, ad esempio per passarlo a un programma o per creare un file con lo stesso nome di una directory.
-
Per estrarre informazioni dal nome o dall'estensione del file – Potresti voler estrarre il nome del file o l'estensione per estrarne informazioni, come la data o il tipo di file.
In questo articolo, daremo un'occhiata ai tre modi più comuni per estrarre il nome del file e l'estensione del file in Bash. Daremo un'occhiata a ciascuno di essi e ti forniremo i pro e i contro, in modo che tu possa prendere una decisione consapevole su quale approccio si adatta meglio a te.
Metodo 1: Utilizzo di nome di base Comando
Il basename
il comando può essere utilizzato per estrarre il nome file e l'estensione da un percorso file:
filename=$(basename /path/to/file.txt)
echo $filename
Sebbene questo metodo sia abbastanza semplice e facile da usare, sfortunatamente non è possibile estrarre solo il nome del file (senza estensione) senza alcuna postelaborazione.
È inoltre possibile utilizzare il dirname
comando per estrarre il percorso della directory separatamente:
directory=$(dirname /path/to/file.txt)
echo $directory
PRO:
- Semplice da usare
- Gestisce correttamente i nomi di file con spazi
Contro:
- Estrae solo il nome del file e non può estrarre l'estensione separatamente senza un'ulteriore elaborazione
Metodo 2: utilizzo dell'espansione dei parametri
Bash fornisce una funzionalità chiamata espansione dei parametri, che consente di estrarre parti di una variabile utilizzando una sintassi speciale. Ad esempio, puoi utilizzare la seguente sintassi per estrarre il nome file e l'estensione da un percorso file memorizzato in una variabile:
filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename
Puoi anche utilizzare l'espansione dei parametri per estrarre l'estensione separatamente:
extension=${filename##*.}
echo $extension
PRO:
- Flessibile
- Può estrarre separatamente sia il nome del file che l'estensione,
- Gestisce correttamente i nomi di file con spazi
Contro:
- Richiede una variabile per memorizzare il percorso del file
Metodo 3: Utilizzo di awk command
Il awk
Il comando è un potente strumento di elaborazione del testo che può essere utilizzato per estrarre parti di una stringa. Ad esempio, puoi utilizzare la seguente sintassi per estrarre il nome file e l'estensione da un percorso file:
filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename
Dai un'occhiata alla nostra guida pratica e pratica per l'apprendimento di Git, con le migliori pratiche, gli standard accettati dal settore e il cheat sheet incluso. Smetti di cercare su Google i comandi Git e in realtà imparare esso!
È inoltre possibile utilizzare awk
per estrarre l'estensione separatamente:
extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension
PRO:
- Potente
- Può estrarre separatamente sia il nome del file che l'estensione
- Gestisce correttamente i nomi di file con spazi
Contro:
- La sintassi potrebbe non essere familiare ad alcuni utenti
- Richiede il passaggio del percorso del file
awk
Conclusione
Nel complesso, estrarre il nome e l'estensione di un file in Bash può essere una tecnica utile per lavorare con i file ed eseguire varie attività nella shell Bash.
Ciascuno dei metodi menzionati presenta vantaggi e svantaggi e la scelta migliore dipenderà dalle vostre esigenze e preferenze specifiche. Spesso è utile avere familiarità con più approcci in modo da poter scegliere quello più adatto alla propria situazione.