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:
- Sådan udpakkes tarfiler til en bestemt eller anden mappe i Linux
- 3 måder at slette alle filer i et bibliotek undtagen en eller få filer med udvidelser
- 10 nyttige tip til skrivning af effektive Bash-scripts i Linux
- 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.