Leer Linux

Wildcards in Linux uitgelegd met 10 voorbeelden

Wildcards in Linux uitgelegd met 10 voorbeelden

Jokertekens, a.k.een. meta-tekens, zijn een uitkomst als het gaat om het zoeken naar bepaalde bestandsnamen uit een hoop bestanden met dezelfde naam. Door bijvoorbeeld jokertekens in Linux te gebruiken, kunt u de ls opdracht,  rm commando, of een ander Linux-commando wat dat betreft, op meerdere bestanden, zolang ze voldoen aan de gedefinieerde criteria.

In deze lezing zullen we bespreken hoe u Wildcards in Linux kunt gebruiken om uw workflow te stroomlijnen en productiever te worden. Maar laten we eerst eens kijken naar de krachtigste en meest gebruikte wildcards in Linux:

  1. Het sterretje (*): De (*) jokerteken staat voor een willekeurig aantal onbekende tekens. Dit is handig bij het zoeken naar documenten of bestanden, maar als u slechts een deel van de naam onthoudt.
  2. Het vraagteken (?): De (?) jokerteken staat voor slechts één onbekend teken. Dit is handig als u een lijst met gelijknamige bestanden hebt en niet zeker bent van een paar tekens.
  3. De tekens tussen haakjes ([ ]): De ([ ]) jokerteken - het 3e haakje en niet het 1e haakje - wordt gebruikt om tekens die tussen haakjes zijn gedefinieerd te matchen. Deze optie is handig bij het omgaan met bestanden in hoofdletters en kleine letters, zoals we later zullen zien.

Nu realiseer ik me dat al deze informatie geen zin heeft als je nog nooit eerder met wildcards te maken hebt gehad. Om u echter te helpen uw verwarring op te lossen, hebben we een gedetailleerde handleiding samengesteld, inclusief 10 voorbeelden, om ervoor te zorgen dat u de functie van jokertekens goed begrijpt en ze zelf gaat gebruiken.

Voorbeelden van overeenkomende bestandsnamen met jokertekens

Laten we om te beginnen alle verschillende wildcards gebruiken die we eerder hebben besproken en kijken hoe we ze kunnen gebruiken om bestandsnamen te matchen. Om dit te doen, gebruiken we de volgende set bestanden:

  1. Deze opdracht komt overeen met alle bestandsnamen die beginnen met de letter M en eindigend met een of meer exemplaren van een willekeurig teken.
$ ls -l M*

Uitgang:

Merk op hoe het alleen overeenkomt met de bestanden die beginnen met de hoofdletter "M" en niet met de kleine letter 'm'. 

2. Deze opdracht kopieert alle bestandsnamen die beginnen met Mijn data en eindigend met een of meerdere keren dat een willekeurig teken voorkomt.

$ ls Mijn-Data*

Uitgang:

3. Deze opdracht komt overeen met alle bestanden die beginnen met de letter M, eindigend met de letter nee, en met een willekeurig teken ertussen.

$ ls M?nee.sh

Uitgang:

4. Deze opdracht komt overeen met alle bestanden die beginnen met de letter M, eindigend met de letter nee, maar met slechts 1 teken ertussen behoort tot de lijst met tekens gedefinieerd tussen vierkante haken [AEIOU].

$ ls M[AEIOU]N.sh

Uitgang:

4 voorbeelden van het combineren van verschillende jokertekens om bestandsnamen te matchen

Om uw effectiviteit een boost te geven, kunt u deze jokertekens mixen en matchen om samen te werken en effectiever te zijn in het matchen van bestandsnamen.

  1. Hier is een commando dat je zal helpen om een ​​bestandsnaam te vinden die 3 karakters kan hebben (inclusief geen karakters) gevolgd door taart en eindigend met een of meer exemplaren van een willekeurig teken.
$ ls ???taart*

Uitgang:

2. Hier is een commando dat overeenkomt met alle bestandsnamen die beginnen met een van deze tekens tussen vierkante haken [MNLOP] en eindigen met een of meer exemplaren van een willekeurig teken.

Laten we ook kijken wat er gebeurt als we vervangen [MNLOP] met [mnlop].

Dus de commando's die we zullen gebruiken zijn:

$ ls [MNLOP]*
$ ls [mnlop]*

Uitgang:

Zoals u kunt zien, moet u zich bewust zijn van de hoofdletters en kleine letters van de letters die u invoert in het haakje-jokerteken, omdat dat het resultaat zal beïnvloeden.

3. Hier is een commando dat alle bestandsnamen zal matchen met een van deze karakters [MNLOP] als de eerste, een van deze tekens [AEIOU] als de tweede, gevolgd door nee, en ten slotte eindigend met een of meer exemplaren van een willekeurig teken.

$ ls [MNLOP][AEIOU]N*

Uitgang:

Merk op hoe de (*) wildcard helpt alleen om alle extensies van de bestandsnamen te vinden.4.

Hier is een commando dat overeenkomt met alle bestandsnamen die beginnen met een of meer exemplaren van een willekeurig teken dat leidt tot M, gevolgd door een willekeurig teken, gevolgd door nee, en dan eindigend met een of meer exemplaren van een willekeurig teken.

$ ls *M?N*

Uitgang:

Jokertekens gebruiken om tekenset te matchen

Inmiddels zou u een goed begrip moeten hebben van hoe jokertekens werken. We kunnen ons nu concentreren op enkele geavanceerde use-cases waarbij wildcards van onschatbare waarde zijn.

Bijvoorbeeld de jokerteken tussen haakjes stelt u in staat een reeks tekens te definiëren met [-] in plaats van elk teken uit te typen. Dit kan erg handig zijn als u een set tekens wilt specificeren en bestandsnamen wilt matchen op basis van waar de tekens verschijnen. 

Om dit te doen, gebruiken we de volgende set bestanden, zoals weergegeven in de afbeelding:

Zoals je kunt zien, is de afbeelding die we hebben gemaakt een lijst met bestanden die verschillende Pokemon-gegevens bevatten.

Nu om alle bestandsnamen te vinden die beginnen met pokémon- gevolgd door een nummer, dan een willekeurig alfanumeriek teken, opnieuw gevolgd door een cijfer, en dan eindigend met een of meer exemplaren van een willekeurig teken, kunnen we de volgende opdracht gebruiken:

$ls pokemon-[0-9][0-9a-zA-Z][0-9]*

Uitgang:

Het onderdeel [0-9] staat voor alle numerieke tekens tussen 0 naar 9

Het volgende deel [0-9a-zA-Z] staat voor een willekeurig aantal tekens tussen 0 naar 9, of een kleine letter tussen een naar z, of een hoofdletter tussen EEN naar Z.

Als zodanig, als we overstappen [0-9a-zA-Z] met [0-9a-z], je kunt zien dat het resultaat geen bestandsnaam bevat met de hoofdletters op de aangewezen positie.

$ls pokemon-[0-9][0-9a-z][0-9]*

Uitgang:

Jokertekens gebruiken om een ​​reeks tekens te negeren

Net zoals je een set karakters kunt specificeren, kun je ook een set karakters negeren tijdens het matchen voor bestandsnamen. Hier is een voorbeeld van hoe het moet:

$ls pokemon-[0-9][!a-z][0-9]*

Uitgang:

Dit komt overeen met alle bestandsnamen die beginnen met pokémon- gevolgd door een willekeurig numeriek teken, vervolgens door een ander teken dan kleine letters, gevolgd door een willekeurig numeriek teken en tenslotte eindigend met een of meer exemplaren van een willekeurig teken.

Gebruik makend van [!a-z], we ontkennen de verzameling van alle kleine letters. Nu komen de bestandsnamen overeen voor elk teken dat geen kleine letter is.

Afsluiten

Dus dat brengt ons aan het einde van onze snelle blik op Linux-wildcards en hoe ze te gebruiken. Alles samenvattend, in een notendop, de sterretje (*) wildcard is het handigst als u de bestandsnaam kent, maar niet de extensie. De vraagteken (?) wildcard kan u helpen als u een paar bestandsnaamtekens vergeet. De haakje ([]) jokerteken is handig als u uw zoekopdracht binnen een reeks gedefinieerde tekens wilt houden.

Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...
Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...