Dateinamen ohne Erweiterung in Bash lesen

Read Filename Without Extension Bash



Linux-Benutzer müssen für viele Zwecke regelmäßig mit Dateien arbeiten. Manchmal müssen die Benutzer den Basisnamen der Datei nur lesen, indem sie die Dateierweiterung entfernen. Dateiname und Erweiterung können in Linux auf verschiedene Weise getrennt und in verschiedenen Variablen gespeichert werden. Der eingebaute Bash-Befehl und die Shell-Parametererweiterung können verwendet werden, um die Erweiterung der Datei zu entfernen. Wie der Dateiname ohne Erweiterung mit den oben genannten Methoden gelesen werden kann, wird in diesem Tutorial erklärt.

Verwenden des Befehls `basename` zum Lesen des Dateinamens

Der Befehl `basename` wird verwendet, um den Dateinamen ohne Erweiterung aus einem Verzeichnis oder Dateipfad zu lesen.







Syntax:



BasisnameNAME[SUFFIX]

oder



BasisnameOPTION... NAME...

Dabei kann NAME den Dateinamen oder den Dateinamen mit vollem Pfad enthalten. SUFFIX ist optional und enthält den Dateierweiterungsteil, den der Benutzer entfernen möchte. Der Befehl `basename` hat einige Optionen, die unten beschrieben werden.





Optionen

Name Beschreibung
-zu Es wird verwendet, um mehrere Dateinamen mit oder ohne Pfad als Befehlsargumente zu übergeben.
-S Es wird verwendet, um die Erweiterung als Suffix zu übergeben, das entfernt werden muss.
-Mit Es wird verwendet, um die mehreren Dateinamen anzuzeigen, indem jede Datei durch Null getrennt wird.
-Hilfe Es wird verwendet, um die Informationen zur Verwendung des Befehls `basename` anzuzeigen.
-Ausführung Es wird verwendet, um die Versionsinformationen anzuzeigen.

Beispiel-1: Verwendung von NAME und SUFFIX

Der folgende `basename`-Befehl ruft den Dateinamen mit der Erweiterung ab. SUFFIX wird in diesem Befehl weggelassen. Hier ist die Ausgabe 'produkt.txt' .



$Basisname /Heimat/fahmida/Code/produkt.txt

Wenn Sie den Dateinamen ohne Erweiterung abrufen möchten, müssen Sie die Dateierweiterung als SUFFIX mit dem Befehl `basename` angeben. Hier ist die Erweiterung .txt. Führen Sie den folgenden Befehl aus, um die Erweiterung aus der Datei zu entfernen.

$Basisname /Heimat/fahmida/Code/produkt.txt .txt

Beispiel-2: Verwenden der Option „-a“ und NAME

Die Verwendung der Option ‚-a‘ des Befehls ‚basename‘ wird in diesem Beispiel gezeigt. Hier werden zwei Dateipfade als Argumente mit dem Befehl `basename` übergeben. Jeder Dateiname mit Erweiterung wird aus dem Pfad abgerufen und per Zeilenumbruch gedruckt.

$Basisname -zu /Heimat/fahmida/index.html/Heimat/fahmida/Code/emp.txt

Beispiel-3: Verwenden der Option „-z“ und NAME

Die Option '-z' wird mit dem Befehl 'basename' verwendet, um die mehreren Dateinamen mit einem Nullwert anstelle eines Zeilenumbruchs zu drucken. Der folgende Befehl verwendet zwei Optionen zusammen, ‚-a‘ und ‚-z‘. Hier zwei Dateinamen, index.html und emp.txt wird ohne Leerzeichen oder Zeilenumbruch gedruckt.

$Basisname -das /Heimat/fahmida/index.html/Heimat/fahmida/Code/emp.txt

Beispiel-4: Verwenden der Option „-s“ und NAME

Der folgende Befehl kann alternativ zu SUFFIX mit `basename` verwendet werden. Die Dateierweiterung muss mit der Option '-sh' übergeben werden, um die Dateierweiterung aus der Datei zu entfernen. Im folgenden Beispiel wird die Erweiterung „-sh“ aus der Datei „addition.sh“ entfernt.

$Basisname -S.sh Ergänzung.sh

Beispiel-5: Dateierweiterung ohne SUFFIX entfernen

Wenn Sie die Erweiterung der Datei, die Sie aus dem Dateinamen entfernen möchten, nicht kennen, hilft Ihnen dieses Beispiel bei der Lösung des Problems. Erstellen Sie eine Datei mit dem Namen read_file.sh mit dem folgenden Code, um den Dateinamen einer beliebigen Erweiterung abzurufen. Der Befehl `sed` wird in diesem Beispiel verwendet, um jede Art von Erweiterung aus dem Dateinamen zu entfernen. Wenn Sie das Skript ausführen, lautet die Ausgabe ‘ Durchschnitt ’ nach dem Entfernen der Erweiterung ‘ py '.

read_file.sh

#!/bin/bash
# Setze den Dateinamen mit Pfad
Dateiname='/home/fahmida/code/average.py'
# Lesen Sie den Dateinamen ohne Erweiterung, indem Sie den Befehl 'basname' und 'sed' verwenden
rauswerfen '$(basename '$filename' | sed 's/(.*)..*/1/')'

Führen Sie das Skript aus.

$bashread_file.sh

Beispiel-6: Konvertieren Sie die Dateierweiterung von txt in docx

Dateiname ohne Erweiterung muss die Datei von einer Erweiterung in eine andere konvertieren. Dieses Beispiel zeigt, wie Sie die Erweiterung aller Textdateien (.txt) in Word-Dateien (.docx) ändern können, indem Sie den Befehl `basename` im Bash-Skript verwenden. Erstellen Sie eine Datei mit dem Namen, convert_file.sh mit folgendem Code. Hier wird eine for-in-Schleife verwendet, um alle Textdateien mit zu lesen .TXT Erweiterung aus dem aktuellen Verzeichnis. Der Dateiname ohne Erweiterung wird mit dem Befehl `basename` gelesen und umbenannt, indem in jeder Iteration der Schleife die Erweiterung .docx hinzugefügt wird.

convert_file.sh

#!/bin/bash
# die Schleife liest jede Textdatei aus dem aktuellen Verzeichnis
zumDateinamein ``ls *.TXT``
tun
# Drucken Sie den Textdateinamen vor der Konvertierung
rauswerfen 'Dateiname vor der Konvertierung:$Dateiname'
# Ändern Sie die Erweiterung der Datei txt in docx
mv - '$Dateiname' '$(Basisname -- '$Dateiname' .txt).docx '
getan

Führen Sie das Skript aus.

$bashconvert_file.sh

Überprüfen Sie, ob die Textdateien konvertiert wurden oder nicht, indem Sie den Befehl `ls` verwenden.

$ls

Beispiel-7: Dateinamen ohne Erweiterung mit Shell-Parametererweiterung lesen

Die Shell-Parametererweiterung ist eine weitere Möglichkeit, den Dateinamen ohne Erweiterung in der Bash zu lesen. Dieses Beispiel zeigt die Verwendung der Shell-Parametererweiterung. Der folgende Befehl speichert den Dateipfadnamen in der Variablen $ Dateiname .

$Dateiname='/var/usr/temp/meinedatei.tar.gz'

Der folgende Befehl entfernt alle Arten von Erweiterungen aus dem Pfad und speichert den Dateipfad ohne Erweiterung in der Variablen, $datei1 .

$Datei1='${Dateiname%%.*}'

Der folgende Befehl gibt nur den Dateinamen aus dem Pfad aus. Hier wird die Ausgabe ‘ meine Datei '.

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

Wenn der Dateiname zwei Erweiterungen mit zwei Punkten (.) enthält und Sie den Dateinamen lesen möchten, indem Sie die letzte Erweiterung der Datei entfernen, müssen Sie den folgenden Befehl verwenden. Führen Sie den folgenden Befehl aus, der den Dateipfad in der Variablen speichert: $ Datei2 indem Sie die letzte Erweiterung der Datei entfernen.

$Datei2='${Dateiname%.*}'

Führen Sie nun den folgenden Befehl aus, um den Dateinamen mit einer Punkterweiterung (.) zu drucken. Hier wird die Ausgabe sein meinedatei.tar.

$rauswerfen '$ {Datei2 ## * /}'

Abschluss

Dateiname ohne Erweiterung wird für verschiedene Zwecke benötigt. Einige Verwendungen von Dateinamen ohne Erweiterung werden in diesem Tutorial anhand einiger Beispiele wie der Dateikonvertierung erläutert. Dieses Tutorial hilft interessierten Benutzern, die Möglichkeiten zum Trennen des Dateinamens und der Erweiterung vom Dateipfad zu erlernen. Hier werden zwei Wege erklärt. Der Benutzer kann eine dieser Methoden verwenden, um den Dateinamen nur aus dem Dateipfad zu extrahieren.