Estrai nome file ed estensione in Bash

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.

Timestamp:

Di più da Impilamento