SUCKUP.de

wildcards in der shell

This blog post has been published on 2010-02-09 and may be out of date.

Wildcards sind eine Shell-Funktion, mit der Kommandozeile viel mächtiger als alle GUI-Datei-Manager macht. – Wiki

Hier ist eine Liste der am häufigsten verwendeten Platzhalter in der bash:

* -> Kein oder mehr Zeichen
? -> genau ein Zeichen
[bcde] -> genau eines dieser Zeichen (“b” bis “e”)
[ae] -> genau ein Zeichen aus dem angegebenen Bereich (“a” bis “e”)
[!abcde] -> jedes Zeichen, das nicht aufgeführt ist
[!ae] -> alle Zeichen, die nicht im angegebenen Bereich sind
{debian,linux} -> genau ein ganzes Wort von den angegebenen Wörtern

Beispiele:

Löscht jede Datei in dem aktuellen Verzeichnis, außer die die mit einem “.” beginnen:

rm *

verschiebt alle HTML-Dateien, die das Wort “linux” in ihrem Dateinamen haben, in dem Unterverzeichnis “neues_verzeichnis”:

mv *linux*.html neues_verzeichnis/

zeigt alle Dateien an, im aktuellen Verzeichnis an, die mit “d” beginnen und auf “.txt” enden:

ls d*.txt

löscht alle Dateien, deren Namen “junk.” gefolgt von genau drei beliebigen Zeichen ist:

rm junk.???

zeigt eine Liste aller Dateien oder Verzeichnisse an, deren Namen “sda” oder “hda” mit genau einer darauf folgenden Ziffer ist:

ls [sh]da[0-9]

zeigt eine Liste aller Dateien oder Verzeichnisse an, deren Namen “hda” mit genau zwei darauf folgenden Ziffer ist:

ls hda[0-9][0-9]

alle Dateien oder Verzeichnisse werden angezeigt, deren Namen entweder mit “hd” oder “sd” gefolgt von einem einzelnen Zeichen zwischen “a” und “c”:

ls {hd,sd}[ac]

kopiert alle Dateien, die mit einem Großbuchstaben beginnen, in das Verzeichnis dir2

cp [AZ]* dir2

löscht alle Dateien, die nicht auf “c”, “e”, “h” oder “g” enden:

rm *[!cehg]