10 praktiske eksempler ved brug af jokertegn til at matche filnavne i Linux


Jokertegn (også kaldet metategn) er symboler eller specialtegn, der repræsenterer andre tegn. Du kan bruge dem med en hvilken som helst kommando, såsom ls-kommando eller rm-kommando, til at liste eller fjerne filer, der matcher et givet kriterium, modtageligt.

Læs også: 10 nyttige praktiske eksempler på lænkeoperatører i Linux

Disse jokertegn fortolkes af skallen, og resultaterne returneres til den kommando, du kører. Der er tre vigtigste wildcards i Linux:

  • En stjerne (*) - matcher en eller flere forekomster af et hvilket som helst tegn, inklusive intet tegn.
  • Spørgsmålstegn (?) - repræsenterer eller matcher en enkelt forekomst af et hvilket som helst tegn.
  • Tegn i parentes ([]) - matcher enhver forekomst af tegn, der er omsluttet af firkantede parenteser. Det er muligt at bruge forskellige typer tegn (alfanumeriske tegn): tal, bogstaver, andre specialtegn osv.

Du skal nøje vælge, hvilket jokertegn der skal bruges til at matche korrekte filnavne: det er også muligt at kombinere dem alle i en operation som forklaret i eksemplerne nedenfor.

Sådan matches filnavne ved hjælp af jokertegn i Linux

Med henblik på denne artikel vil vi bruge følgende filer til at demonstrere hvert eksempel.

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

1. Denne kommando matcher alle filer med navne, der starter med l (som er præfikset) og slutter med en eller flere forekomster af et hvilket som helst tegn.

$ ls -l l*	

2. Dette eksempel viser en anden brug af * til at kopiere alle filnavne med prefix brugere-0 og slutter med en eller flere forekomster af et hvilket som helst tegn.

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

3. Følgende kommando matcher alle filer med navne, der begynder med l efterfulgt af et enkelt tegn og slutter med st.sh (som er suffikset).

$ ls l?st.sh	

4. Kommandoen nedenfor matcher alle filer med navne, der starter med l efterfulgt af et af tegnene i firkantet parentes, men slutter med st.sh .

$ ls l[abdcio]st.sh 

Sådan kombineres jokertegn for at matche filnavne i Linux

Du kan kombinere jokertegn for at oprette et komplekst matchende kriterium for filnavn som beskrevet i de følgende eksempler.

5. Denne kommando matcher alle filnavne, der er forud for to tegn efterfulgt af st , men slutter med en eller flere forekomster af et hvilket som helst tegn.

$ ls
$ ls ??st*

6. Dette eksempel matcher filnavne, der starter med et af disse tegn [clst] og slutter med en eller flere forekomster af et hvilket som helst tegn.

$ ls
$ ls [clst]*

7. I disse eksempler er det kun filnavne, der starter med et af disse tegn [clst] efterfulgt af et af disse [io] og derefter ethvert enkelt tegn efterfulgt af en t og til sidst vil en eller flere forekomster af et hvilket som helst tegn blive vist.

$ ls
$ ls [clst][io]?t*

8. Her fjernes filnavne med en eller flere forekomster af et tegn efterfulgt af bogstaverne tar og slutter med en eller flere forekomster af et hvilket som helst tegn.

$ ls
$ rm *tar*
$ ls

Sådan matcher du tegn, der er sat i Linux

9. Lad os nu se på, hvordan man angiver et sæt tegn. Overvej nedenstående filnavne, der indeholder oplysninger om systembrugere.

$ 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

Denne kommando matcher alle filer, hvis navn starter med brugere-i , efterfulgt af et tal, et lille bogstav eller tal, derefter et tal og slutter med en eller flere forekomster af et hvilket som helst tegn.

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

Den næste kommando matcher filnavne, der begynder med brugere-i , efterfulgt af et tal, et stort eller stort bogstav eller tal, derefter et tal og slutter med en eller flere forekomster af et hvilket som helst tegn.

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

Denne kommando, der følger, matcher alle filnavne, der begynder med brugere-i , efterfulgt af et tal, et stort eller stort bogstav eller tal, derefter et stort eller stort bogstav og slutter med en eller flere forekomster af enhver karakter.

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

Sådan negerer du et sæt tegn i Linux

10. Du kan lige så godt negere et sæt tegn ved hjælp af ! -symbolet. Følgende kommando viser alle filnavne, der starter med brugere-i , efterfulgt af et tal, ethvert gyldigt filnavngivende tegn bortset fra et tal, derefter et stort eller stort bogstav og ender med en eller flere forekomster af enhver Karakter.

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

Det er alt for nu! Hvis du har prøvet ovenstående eksempler, skal du nu have en god forståelse af, hvordan wildcards fungerer for at matche filnavne i Linux.

Du kan også lide at læse disse følgende artikler, der viser eksempler på brug af jokertegn i Linux:

  1. Sådan udpakkes tarfiler til en bestemt eller anden mappe i Linux
  2. 3 måder at slette alle filer i et bibliotek undtagen en eller få filer med udvidelser
  3. 10 nyttige tip til skrivning af effektive Bash-scripts i Linux
  4. Sådan bruges Awk og regulære udtryk til at filtrere tekst eller streng i filer

Hvis du har noget at dele eller et eller flere spørgsmål at stille, så brug kommentarformularen nedenfor.