Zoeken op website

10 praktische voorbeelden met behulp van jokertekens om bestandsnamen te matchen in Linux


Wildcards (ook wel metatekens genoemd) zijn symbolen of speciale tekens die andere tekens vertegenwoordigen. Je kunt ze gebruiken met elk commando, zoals het ls-commando of het rm-commando, om op een receptieve manier bestanden weer te geven of te verwijderen die aan een bepaald criterium voldoen.

Lees ook: 10 nuttige praktische voorbeelden over het koppelen van operators in Linux

Deze jokertekens worden door de shell geïnterpreteerd en de resultaten worden teruggestuurd naar de opdracht die u uitvoert. Er zijn drie belangrijke jokertekens in Linux:

  • Een asterisk (*) – komt overeen met een of meerdere keren dat een teken voorkomt, inclusief geen teken.
  • Vraagteken (?) – vertegenwoordigt of komt overeen met een enkel voorkomen van een willekeurig teken.
  • Tekens tussen haakjes ([ ]) – komt overeen met elk teken dat tussen vierkante haakjes staat. Het is mogelijk om verschillende soorten tekens (alfanumerieke tekens) te gebruiken: cijfers, letters, andere speciale tekens enz.

U moet zorgvuldig kiezen welk jokerteken u wilt gebruiken om de juiste bestandsnamen te matchen: het is ook mogelijk om ze allemaal in één handeling te combineren, zoals uitgelegd in de onderstaande voorbeelden.

Bestandsnamen matchen met jokertekens in Linux

Voor de doeleinden van dit artikel zullen we de volgende bestanden gebruiken om elk voorbeeld te demonstreren.

createbackup.sh  list.sh  lspace.sh        speaker.sh
listopen.sh      lost.sh  rename-files.sh  topprocs.sh

1. Deze opdracht matcht alle bestanden met namen die beginnen met l (wat het voorvoegsel is) en eindigen met een of meer exemplaren van een willekeurig teken.

ls -l l*	

2. Dit voorbeeld toont een ander gebruik van * om alle bestandsnamen te kopiëren, voorafgegaan door users-0 en eindigend met een of meer exemplaren van een willekeurig teken.

mkdir -p users-info
ls users-0*
mv -v users-0* users-info/	# Option -v flag enables verbose output

3. De volgende opdracht matcht alle bestanden met een naam die begint met l gevolgd door een enkel teken en eindigt met st.sh (wat het achtervoegsel is ).

ls l?st.sh	

4. De onderstaande opdracht matcht alle bestanden met een naam die begint met l, gevolgd door een van de tekens tussen de vierkante haakjes, maar eindigt met st.sh .

ls l[abdcio]st.sh 

Hoe jokertekens te combineren om bestandsnamen in Linux te matchen

U kunt jokertekens combineren om complexe criteria voor de bestandsnaam op te bouwen, zoals beschreven in de volgende voorbeelden.

5. Deze opdracht zal overeenkomen met alle bestandsnamen die voorafgegaan zijn door twee willekeurige tekens, gevolgd door st, maar eindigen met een of meerdere keren voorkomen van een willekeurig teken.

ls
ls ??st*

6. Dit voorbeeld komt overeen met bestandsnamen die beginnen met een van deze tekens [clst] en eindigen met een of meerdere keren voorkomen van een teken.

ls
ls [clst]*

7. In dit voorbeeld beginnen alleen bestandsnamen met een van deze tekens [clst] gevolgd door een van deze [io] en vervolgens een willekeurig teken teken, gevolgd door een t en ten slotte worden een of meer exemplaren van een teken weergegeven.

ls
ls [clst][io]?t*

8. Hier worden bestandsnamen verwijderd die worden voorafgegaan door een of meer tekens, gevolgd door de letters tar en die eindigen met een of meer tekens.

ls
rm *tar*
ls

Tekens matchen die zijn ingesteld in Linux

9. Laten we nu eens kijken hoe we een set tekens kunnen specificeren. Bekijk de onderstaande bestandsnamen die informatie over systeemgebruikers bevatten.

ls

users-111.list  users-1AA.list  users-22A.list  users-2aB.txt   users-2ba.txt
users-111.txt   users-1AA.txt   users-22A.txt   users-2AB.txt   users-2bA.txt
users-11A.txt   users-1AB.list  users-2aA.txt   users-2ba.list
users-12A.txt   users-1AB.txt   users-2AB.list  users-2bA.list

Deze opdracht zal alle bestanden matchen waarvan de naam begint met users-i, gevolgd door een cijfer, een kleine letter of cijfer, dan een cijfer en eindigt met een of meer exemplaren van een willekeurig teken.

ls users-[0-9][a-z0-9][0-9]*

Het volgende commando zoekt naar bestandsnamen die beginnen met users-i, gevolgd door een cijfer, een kleine of hoofdletter of cijfer, en vervolgens een cijfer, en eindigt met een of meer exemplaren van een willekeurig teken.

ls users-[0-9][a-zA-Z0-9][0-9]*

Met dit commando dat volgt, worden alle bestandsnamen gevonden die beginnen met users-i, gevolgd door een cijfer, een kleine of hoofdletter of cijfer, vervolgens een kleine of hoofdletter en eindigt met een of meer exemplaren van elk karakter.

ls users-[0-9][a-zA-Z0-9][a-zA-Z]*

Hoe een reeks karakters in Linux te negeren

10. Je kunt net zo goed een reeks tekens ontkennen met het !-symbool. De volgende opdracht geeft een overzicht van alle bestandsnamen die beginnen met users-i, gevolgd door een getal, elk geldig teken voor de bestandsnaamgeving behalve een cijfer, vervolgens een kleine of hoofdletter en eindigt met een of meer exemplaren van een willekeurige karakter.

ls users-[0-9][!0-9][a-zA-Z]*

Dat is het voor nu! Als je de bovenstaande voorbeelden hebt uitgeprobeerd, zou je nu een goed begrip moeten hebben van hoe jokertekens werken om bestandsnamen in Linux te matchen.

Misschien wilt u ook deze volgende artikelen lezen, waarin voorbeelden worden gegeven van het gebruik van jokertekens in Linux:

  1. Hoe Tar-bestanden uitpakken naar een specifieke of andere map in Linux
  2. 3 manieren om alle bestanden in een map te verwijderen, behalve één of enkele bestanden met extensies
  3. 10 Handige tips voor het schrijven van effectieve Bash-scripts in Linux
  4. Hoe u Awk en reguliere expressies kunt gebruiken om tekst of tekenreeksen in bestanden te filteren

Als u iets te delen heeft of vragen heeft, kunt u het onderstaande opmerkingenformulier gebruiken.