Extrahieren Sie den Dateinamen und die Erweiterung in Bash

Einleitung

Es gibt viele Gründe, warum Sie den Dateinamen und die Erweiterung einer Datei in Bash extrahieren möchten:

  • Um den Dateinamen oder die Erweiterung zu manipulieren – Möglicherweise möchten Sie den Dateinamen oder die Erweiterung extrahieren, um ihn zu ändern, z. B. ein Präfix oder Suffix zum Dateinamen hinzuzufügen oder die Dateierweiterung zu ändern.

  • So erstellen Sie eine Datei mit einem eindeutigen Namen – Möglicherweise möchten Sie den Dateinamen und die Erweiterung extrahieren, um eine neue Datei mit einem eindeutigen Namen zu erstellen, indem Sie beispielsweise einen Zeitstempel oder eine Zufallszahl zum Dateinamen hinzufügen.

  • Um den Dateinamen oder die Erweiterung in einem Skript oder Befehl zu verwenden – Möglicherweise möchten Sie den Dateinamen oder die Erweiterung extrahieren, um ihn als Argument oder Eingabe für ein Skript oder einen Befehl zu verwenden, beispielsweise um ihn an ein Programm zu übergeben oder eine Datei mit demselben Namen wie ein Verzeichnis zu erstellen.

  • Um Informationen aus dem Dateinamen oder der Erweiterung zu extrahieren – Möglicherweise möchten Sie den Dateinamen oder die Erweiterung extrahieren, um daraus Informationen wie das Datum oder den Dateityp zu extrahieren.

In diesem Artikel werfen wir einen Blick auf die drei gängigsten Methoden zum Extrahieren von Dateinamen und Dateierweiterungen in Bash. Wir werfen einen Blick auf jeden von ihnen und erläutern Ihnen die Vor- und Nachteile, damit Sie eine fundierte Entscheidung darüber treffen können, welcher Ansatz am besten zu Ihnen passt.

Methode 1: Verwenden der Basisname Befehl

Das basename Mit dem Befehl können Sie den Dateinamen und die Erweiterung aus einem Dateipfad extrahieren:

filename=$(basename /path/to/file.txt)
echo $filename

Obwohl diese Methode recht einfach und benutzerfreundlich ist, gibt es leider keine Möglichkeit, nur den Dateinamen (ohne Erweiterung) ohne Nachbearbeitung zu extrahieren.

Sie können auch die Tasten dirname Befehl zum separaten Extrahieren des Verzeichnispfads:

directory=$(dirname /path/to/file.txt)
echo $directory

Vorteile:
  • Einfach zu bedienen
  • Behandelt Dateinamen mit Leerzeichen korrekt
Nachteile:
  • Extrahiert nur den Dateinamen und kann die Erweiterung nicht ohne zusätzliche Verarbeitung separat extrahieren

Methode 2: Verwenden der Parametererweiterung

Bash bietet eine Funktion namens Parametererweiterung, mit dem Sie Teile einer Variablen mithilfe einer speziellen Syntax extrahieren können. Sie können beispielsweise die folgende Syntax verwenden, um den Dateinamen und die Erweiterung aus einem in einer Variablen gespeicherten Dateipfad zu extrahieren:

filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename

Sie können die Parametererweiterung auch verwenden, um die Erweiterung separat zu extrahieren:

extension=${filename##*.}
echo $extension

Vorteile:
  • Flexibel
  • Kann sowohl den Dateinamen als auch die Erweiterung separat extrahieren,
  • Behandelt Dateinamen mit Leerzeichen korrekt
Nachteile:
  • Erfordert eine Variable zum Speichern des Dateipfads

Methode 3: Verwenden der awk Befehl

Das awk Der Befehl ist ein leistungsstarkes Textverarbeitungstool, mit dem Teile einer Zeichenfolge extrahiert werden können. Sie können beispielsweise die folgende Syntax verwenden, um den Dateinamen und die Erweiterung aus einem Dateipfad zu extrahieren:

filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename

Sehen Sie sich unseren praxisnahen, praktischen Leitfaden zum Erlernen von Git an, mit Best Practices, branchenweit akzeptierten Standards und einem mitgelieferten Spickzettel. Hören Sie auf, Git-Befehle zu googeln und tatsächlich in Verbindung, um es!

Sie können auch awk So extrahieren Sie die Erweiterung separat:

extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension

Vorteile:
  • Kraftvoll
  • Kann sowohl den Dateinamen als auch die Erweiterung separat extrahieren
  • Behandelt Dateinamen mit Leerzeichen korrekt
Nachteile:
  • Die Syntax ist für einige Benutzer möglicherweise unbekannt
  • Erfordert die Weiterleitung des Dateipfads awk

Zusammenfassung

Insgesamt kann das Extrahieren des Dateinamens und der Erweiterung einer Datei in Bash eine nützliche Technik für die Arbeit mit Dateien und die Ausführung verschiedener Aufgaben in der Bash-Shell sein.

Jede der genannten Methoden hat ihre eigenen Vor- und Nachteile und die beste Wahl hängt von Ihren spezifischen Bedürfnissen und Vorlieben ab. Es ist oft hilfreich, mehrere Ansätze zu kennen, damit Sie den für Ihre Situation am besten geeigneten auswählen können.

Zeitstempel:

Mehr von Stapelmissbrauch