Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung einiger Methoden zum Extrahieren von Dateinamen und Verzeichnisnamen in der Linux-Shell

Zusammenfassung einiger Methoden zum Extrahieren von Dateinamen und Verzeichnisnamen in der Linux-Shell

高洛峰
高洛峰Original
2017-02-07 17:18:242517Durchsuche

Bei Verwendung der Linux-Shell müssen wir häufig Dateinamen oder Verzeichnisnamen verarbeiten. Die üblichen Vorgänge bestehen darin, den Dateinamen aus dem Pfad zu extrahieren, den Verzeichnisnamen aus dem Pfad zu extrahieren, den Dateisuffixnamen zu extrahieren usw. . Extrahieren Sie beispielsweise den Dateinamen file.txt aus dem Pfad /dir1/dir2/file.txt, extrahieren Sie das Verzeichnis /dir1/dir2, extrahieren Sie das Dateisuffix txt usw.

Im Folgenden werden zwei häufig verwendete Methoden zur Durchführung verwandter Vorgänge vorgestellt.

1. Verwenden Sie ${}

1 ${var##*/}
Die Funktion dieses Befehls besteht darin, das letzte ' von der linken Seite zu entfernen Variable var /'-Zeichen und sein linker Inhalt geben den rechten Inhalt des letzten '/' (mit Ausnahme dieses Zeichens) von links zurück. Anwendungsbeispiele und Ergebnisse sind wie folgt:

Linux shell 之 提取文件名和目录名的一些方法总结

Wie Sie den laufenden Ergebnissen entnehmen können, können wir mit diesem Befehl den Dateinamen file.txt extrahieren, den wir benötigen.

Bei Verwendung in einer Shell-Programmdatei können Sie Variablen verwenden, um das Ergebnis zu speichern und es dann zu verwenden, z. B. file=${var##*/}

2, ${var # #*.}

Die Funktion dieses Befehls besteht darin, das letzte '.'-Zeichen links von der Variablen var und den Inhalt links davon zu entfernen und das letzte '.' zurückzugeben links (enthält dieses Zeichen nicht). Anwendungsbeispiele und Ergebnisse sind wie folgt:

Linux shell 之 提取文件名和目录名的一些方法总结

Wie Sie den laufenden Ergebnissen entnehmen können, können wir mit diesem Befehl das benötigte Dateisuffix extrahieren.

Wenn die Datei mehr als ein Suffix hat, zum Beispiel file.tar.gz, kann der Befehl ${var##*.} nur das letzte Suffix extrahieren, und was soll ich tun, wenn ich möchte? tar.gz extrahieren? Dann müssen Sie den unten erwähnten Befehl ${var#*.} verwenden.

3. ${var#*.}

Die Funktion dieses Befehls besteht darin, das erste „.“ von der linken Seite der Variablen var und den Inhalt zu entfernen left Gibt den Inhalt rechts vom ersten „.“ (mit Ausnahme dieses Zeichens) von links zurück. Anwendungsbeispiele und Ergebnisse sind wie folgt:

Linux shell 之 提取文件名和目录名的一些方法总结

Wie Sie den laufenden Ergebnissen entnehmen können, können mit diesem Befehl mehrere Suffixe von Dateien extrahiert werden.

4. ${var%/*}

Die Verwendung dieses Befehls besteht darin, das erste „/“-Zeichen rechts von der Variablen var und den Inhalt zu entfernen right Gibt den Inhalt links vom ersten „/“ (mit Ausnahme dieses Zeichens) von rechts zurück. Anwendungsbeispiele und Ergebnisse sind wie folgt:

Linux shell 之 提取文件名和目录名的一些方法总结

Wie Sie den laufenden Ergebnissen entnehmen können, können wir mit diesem Befehl das Verzeichnis extrahieren, in dem sich die benötigten Dateien befinden

5 , ${var%%.*}

Die Verwendung dieses Befehls besteht darin, das letzte „.“ von der rechten Seite der Variablen var und ihren Inhalt auf der rechten Seite zu entfernen. und geben Sie das letzte „.“-Zeichen von der rechten Seite der Variablen var zurück. Anwendungsbeispiele und Ergebnisse sind wie folgt:

Linux shell 之 提取文件名和目录名的一些方法总结

Wenn wir ein Verzeichnis mit demselben Namen wie der Dateiname (ohne Suffix) erstellen müssen, der der entsprechenden Datei entspricht, können wir dies tun Verwenden Sie diesen Befehl zum Bedienen. Die Situation beim Dekomprimieren von Dateien ist beispielsweise ähnlich. Wenn wir die Datei file.zip komprimieren, wird ein Verzeichnis mit dem Namen file im selben Verzeichnis wie file.zip erstellt.

6. Zusammenfassung von ${}

Tatsächlich wird ${} nicht speziell zum Extrahieren von Dateinamen oder Verzeichnisnamen verwendet. Es wird zum Extrahieren und Ersetzen von Variablen verwendet. usw. Es kann eine Menge Inhalt extrahieren, nicht unbedingt „/“ oder „.“ in den fünf Beispielen oben. Mit anderen Worten, die obige Verwendungsmethode ist nur ein Sonderfall ihrer Verwendung.

Wenn man die oben genannten Befehle sieht, kann es sehr schwierig sein, sie zu verstehen und zu merken. Tatsächlich sind sie alle normal.

#: Stellt den ersten von links dar

%: Stellt den Ersten von rechts dar

##: Stellt den dar letztes

von links: Stellt das letzte

von rechts dar. Mit anderen Worten bedeutet # immer, von links zu zählen das Richtige.

*: Gibt den zu löschenden Inhalt an. Im Fall von # und ## befindet er sich links vom angegebenen Zeichen (im Beispiel „/“ und „.“), was bedeutet, dass das angegebene Zeichen gelöscht wird und der Inhalt links davon; Im Fall von % und %% befindet es sich auf der rechten Seite des angegebenen Zeichens ('/' und '.' im Beispiel), was darauf hinweist, dass das angegebene Zeichen und der Inhalt dazu gehören rechts werden gelöscht. Die Positionen von „*“ können hier nicht vertauscht werden, d. h. das *-Zeichen darf nicht rechts von # oder ## platziert werden und umgekehrt.

Zum Beispiel: ${var%%x*} bedeutet, das letzte Zeichen x von rechts zu finden und das Zeichen x und die Zeichen rechts davon zu löschen.

Wenn Sie dies sehen, können Sie erkennen, dass dieser Befehl tatsächlich sehr vielseitig ist. Das Obige sind nur einige Sonderfälle zum Extrahieren der Benennungseigenschaften von Zeigerdateinamen und Verzeichnisnamen.

2. basename und dirname

${} sind keine Befehle, die speziell zum Extrahieren von Dateinamen und Verzeichnisnamen entwickelt wurden, daher sind die Befehle basename und dirname speziell dafür konzipiert .

1. Basisname

Die Funktion dieses Befehls besteht darin, den Dateinamen aus dem Pfad zu extrahieren. Die Verwendungsmethode ist Basisname NAME [SUFFIX].

1) Extrahieren Sie den Dateinamen (mit Suffix) aus dem Pfad. Das Beispiel lautet wie folgt:

Linux shell 之 提取文件名和目录名的一些方法总结

2) Wie Sie an der Verwendung erkennen können des obigen Befehls ist das Suffix (SUFFIX) optional. Wenn Sie also nur den Dateinamen ohne Suffix extrahieren möchten, können Sie den Suffixnamen auch nach der Variablen hinzufügen. Das Beispiel lautet wie folgt:

Linux shell 之 提取文件名和目录名的一些方法总结

2. dirname

Die Funktion dieses Befehls besteht darin, den Verzeichnisnamen aus dem Pfad zu extrahieren. Die Verwendungsmethode ist dirname NAME

Das Verwendungsbeispiel lautet wie folgt:

Linux shell 之 提取文件名和目录名的一些方法总结

Auf diese Weise wird das Verzeichnis extrahiert, in dem sich die Datei file.txt befindet.

Hinweis: Dieser Befehl kann nicht nur das Verzeichnis extrahieren, in dem sich normale Dateien befinden, sondern auch das Verzeichnis, in dem sich eine beliebige Datei befindet, beispielsweise das Verzeichnis, in dem sich das Verzeichnis befindet, wie folgt:

Linux shell 之 提取文件名和目录名的一些方法总结

Es extrahiert das Verzeichnis dir1, in dem sich das Verzeichnis dir2 befindet.

Das Obige ist der gesamte Inhalt dieses Artikels Lernen, und ich hoffe auch, dass jeder die chinesische PHP-Website unterstützt.

Eine weitere Linux-Shell-Zusammenfassung einiger Methoden zum Extrahieren von Dateinamen und Verzeichnisnamen finden Sie auf der chinesischen PHP-Website für verwandte Artikel!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn