Aktionen

Wildcards: Unterschied zwischen den Versionen

Aus exmediawiki

(Die Seite wurde neu angelegt: „ um auf mehrere Objekte gleich zeitig zuzugreifen gibt es mehrere Möglichkeiten z.B.: Du hast die vier Dateien this that there here in deinem Ordner $ ls…“)
 
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 22: Zeile 22:
 
=Die "*"-Wildcard=
 
=Die "*"-Wildcard=
  
liegen nur die vier Dateien im jeweiligen Ordner, so benutzt man die "*"-Wildcard:  
+
*liegen nur die vier Dateien im jeweiligen Ordner, so benutzt man die "*"-Wildcard:  
  
 
  $ rm *
 
  $ rm *
  
*aber Vorsicht! dieser Befehl löscht wirklich alle Dateien in diesem Ordner.
+
aber Vorsicht! dieser Befehl löscht wirklich alle Dateien in diesem Ordner.
  
  
Es gibt noch weitere Möglichkeiten, z.B. die Verbindung mit den Anfangsbuchstaben der jeweiligen Dateien:  
+
*Es gibt noch weitere Möglichkeiten, z.B. die Verbindung mit den Anfangsbuchstaben der jeweiligen Dateien:  
  
$ rm t*
+
$ rm t*
ls
+
ls
here
+
here
  
das t gilt hier als der Beginn einer Datei, das heißt, daß alle Dateien im jeweiligen Ordner mit t beginnen gelöscht werden und somit in unserem Fall hier nur noch die Datei here übrig bleibt.
+
das ''t'' gilt hier als der Beginn einer Datei, das heißt, daß alle Dateien im jeweiligen Ordner mit t beginnen gelöscht werden und somit in unserem Fall hier nur noch die Datei here übrig bleibt.
  
  
 
würde man nun anstatt
 
würde man nun anstatt
  
$ rm t*
+
$ rm t*
  
 
den Befehl:
 
den Befehl:
  
$ rm h*
+
$ rm h*
  
 
schreiben, dann:
 
schreiben, dann:
  
ls
+
ls
this that there
+
this that there
  
 
wird nur die mit h beginnende Datei here gelöscht
 
wird nur die mit h beginnende Datei here gelöscht
  
  
    Der Stern"*" kann an jede beliebige stelle eingesetzt werden z.b.:  
+
*Der Stern"*" kann an jede beliebige stelle eingesetzt werden z.b.:  
  
$ ls th*re
+
$ ls th*re
there
+
there
  
 
oder
 
oder
  
$ ls *i*
+
$ ls *i*
this
+
this
  
  
    und wenn man zum Beispiel alle .jpg-Dateien im Ordner löschen will, tippt man folgendes:  
+
*und wenn man zum Beispiel alle .jpg-Dateien im Ordner löschen will, tippt man folgendes:  
  
$ rm *.jpg  
+
$ rm *.jpg  
  
  
    hat man .jpg- und .jpeg- Dateinen im Ordner dann:  
+
*hat man .jpg- und .jpeg- Dateinen im Ordner dann:  
  
$ rm *.jp*g
+
$ rm *.jp*g
  
  
    und hat man .jpg- und .JPG- Dateien im Ordner liegen:  
+
*und hat man .jpg- und .JPG- Dateien im Ordner liegen:  
  
$ rm *.{jpg,JPG}
+
$ rm *.{jpg,JPG}
  
  
    Dasselbe gilt natürlich auch für Verzeichnisse.  
+
*Dasselbe gilt natürlich auch für Verzeichnisse.  
  
 
Um die Unterverzeichnisse Photos1 Photos2 und Photos3 zu löschen:
 
Um die Unterverzeichnisse Photos1 Photos2 und Photos3 zu löschen:
  
$ rm -r Photos*
+
$ rm -r Photos*
  
  
Die "?"-Wildcard
+
*Die "?"-Wildcard*
  
 
Die "?"-Wildcard ist so ähnlich wie der Stern"*". Der einzige Unterschied liegt darin das das Fragenzeichen ein Platzhalter für nur einen Buchstaben ist, wobei der Stern für x-beliebieg viele gelten kann.
 
Die "?"-Wildcard ist so ähnlich wie der Stern"*". Der einzige Unterschied liegt darin das das Fragenzeichen ein Platzhalter für nur einen Buchstaben ist, wobei der Stern für x-beliebieg viele gelten kann.
  
$ ls  
+
$ ls  
this1 this2 this3 this14
+
this1 this2 this3 this14
  
  
$ ls this*
+
$ ls this*
this1 this2 this3 this14
+
this1 this2 this3 this14
  
  
$ ls this?
+
$ ls this?
this1 this2 this3
+
this1 this2 this3
  
  
$ ls this??
+
$ ls this??
this14
+
this14
  
  
Die "[]"-Wildcard
+
=Die "[]"-Wildcard=
  
 
Eckige Klammern gelten als Rahmen für eine Suchanfrage:
 
Eckige Klammern gelten als Rahmen für eine Suchanfrage:
  
$ ls
+
$ ls
this_1 this_2 this_3 this_14 this_155 this_x this_y
+
this_1 this_2 this_3 this_14 this_155 this_x this_y
  
  
$ ls this_[1,2]
+
$ ls this_[1,2]
this_1 this_2
+
this_1 this_2
  
  
$ ls this_[3,x]
+
$ ls this_[3,x]
this_3 this_x
+
this_3 this_x
  
  
    das Komma kann man auch ignorieren, da es sich sowieso immer nur um ein Zeichen für die Suchanfage handeln kann:  
+
*das Komma kann man auch ignorieren, da es sich sowieso immer nur um ein Zeichen für die Suchanfage handeln kann:  
  
$ ls this_[3x]
+
$ ls this_[3x]
this_3 this_x
+
this_3 this_x
  
  
    Es ist auch möglich nach Zahlenbereichen oder nach dem abc zu suchen:  
+
*Es ist auch möglich nach Zahlenbereichen oder nach dem abc zu suchen:  
  
$ ls this_[1-3]
+
$ ls this_[1-3]
this_1 this_2 this_3
+
this_1 this_2 this_3
  
$ ls this_[v-z]
+
$ ls this_[v-z]
this_x this_y
+
this_x this_y
  
  
    oder kombiniert  
+
*oder kombiniert  
  
 
  $ ls this_[1-3,x,y]
 
  $ ls this_[1-3,x,y]
this_1 this_2 this_3 this_x this_y
+
this_1 this_2 this_3 this_x this_y
  
  
Umkehrung mit !
+
=Umkehrung mit !=
  
 
Durch das Ausrufezeichen ! kann man die Suchanfrage umkehren:
 
Durch das Ausrufezeichen ! kann man die Suchanfrage umkehren:
  
  
    um alle Dateien, außer die Datei this_1 aufzulisten:  
+
*um alle Dateien, außer die Datei this_1 aufzulisten:  
  
$ ls this_[!1]
+
$ ls this_[!1]
this_2 this_3 this_14 this_155 this_x this_y  
+
this_2 this_3 this_14 this_155 this_x this_y  
  
  
    oder:  
+
*oder:  
  
$ ls !(this_1)
+
$ ls !(this_1)
this_2 this_3 this_14 this_155 this_x this_y
+
this_2 this_3 this_14 this_155 this_x this_y
 +
 
 +
[[Category:HowTo]]
 +
[[Category:GNU/Linux]]
 +
[[Category:Programmierung]]
 +
[[Category:FLOSS]]
 +
[[Category: Command Line]]

Aktuelle Version vom 29. April 2019, 21:45 Uhr


um auf mehrere Objekte gleich zeitig zuzugreifen gibt es mehrere Möglichkeiten

z.B.:

Du hast die vier Dateien this that there here in deinem Ordner

$ ls
this that there here

der Befehl

$ rm this that there here

löscht alle vier Dateien in dem jeweiligen Verzeichnis


bei mehrern Dateien mit komplexen Zusammenhängen ist das aber viel zu viel tippen. Das benutzen von sogenannten "Wildcards" erleichtert dies:


Die "*"-Wildcard

  • liegen nur die vier Dateien im jeweiligen Ordner, so benutzt man die "*"-Wildcard:
$ rm *

aber Vorsicht! dieser Befehl löscht wirklich alle Dateien in diesem Ordner.


  • Es gibt noch weitere Möglichkeiten, z.B. die Verbindung mit den Anfangsbuchstaben der jeweiligen Dateien:
$ rm t*
ls
here

das t gilt hier als der Beginn einer Datei, das heißt, daß alle Dateien im jeweiligen Ordner mit t beginnen gelöscht werden und somit in unserem Fall hier nur noch die Datei here übrig bleibt.


würde man nun anstatt

$ rm t*

den Befehl:

$ rm h*

schreiben, dann:

ls
this that there

wird nur die mit h beginnende Datei here gelöscht


  • Der Stern"*" kann an jede beliebige stelle eingesetzt werden z.b.:
$ ls th*re
there

oder

$ ls *i*
this


  • und wenn man zum Beispiel alle .jpg-Dateien im Ordner löschen will, tippt man folgendes:
$ rm *.jpg 


  • hat man .jpg- und .jpeg- Dateinen im Ordner dann:
$ rm *.jp*g


  • und hat man .jpg- und .JPG- Dateien im Ordner liegen:
$ rm *.{jpg,JPG}


  • Dasselbe gilt natürlich auch für Verzeichnisse.

Um die Unterverzeichnisse Photos1 Photos2 und Photos3 zu löschen:

$ rm -r Photos*


  • Die "?"-Wildcard*

Die "?"-Wildcard ist so ähnlich wie der Stern"*". Der einzige Unterschied liegt darin das das Fragenzeichen ein Platzhalter für nur einen Buchstaben ist, wobei der Stern für x-beliebieg viele gelten kann.

$ ls 
this1 this2 this3 this14


$ ls this*
this1 this2 this3 this14


$ ls this?
this1 this2 this3


$ ls this??
this14


Die "[]"-Wildcard

Eckige Klammern gelten als Rahmen für eine Suchanfrage:

$ ls
this_1 this_2 this_3 this_14 this_155 this_x this_y


$ ls this_[1,2]
this_1 this_2


$ ls this_[3,x]
this_3 this_x


  • das Komma kann man auch ignorieren, da es sich sowieso immer nur um ein Zeichen für die Suchanfage handeln kann:
$ ls this_[3x]
this_3 this_x


  • Es ist auch möglich nach Zahlenbereichen oder nach dem abc zu suchen:
$ ls this_[1-3]
this_1 this_2 this_3
$ ls this_[v-z]
this_x this_y


  • oder kombiniert
$ ls this_[1-3,x,y]
this_1 this_2 this_3 this_x this_y


Umkehrung mit !

Durch das Ausrufezeichen ! kann man die Suchanfrage umkehren:


  • um alle Dateien, außer die Datei this_1 aufzulisten:
$ ls this_[!1]
this_2 this_3 this_14 this_155 this_x this_y 


  • oder:
$ ls !(this_1)
this_2 this_3 this_14 this_155 this_x this_y