10 praktiske eksempler på bruk av jokertegn for å matche filnavn i Linux


Jokertegn (også referert til som metategn) er symboler eller spesialtegn som representerer andre tegn. Du kan bruke dem med en hvilken som helst kommando som ls-kommando eller rm-kommando for å liste eller fjerne filer som samsvarer med et gitt kriterium, mottakelig.

Les også: 10 nyttige praktiske eksempler på kjetting av operatører i Linux

Disse jokertegnene tolkes av skallet og resultatene returneres til kommandoen du kjører. Det er tre hovedjokertegn i Linux:

  • En stjerne (*) – samsvarer med én eller flere forekomster av et hvilket som helst tegn, inkludert ingen tegn.
  • Spørsmålstegn (?) – representerer eller samsvarer med en enkelt forekomst av et hvilket som helst tegn.
  • Tegn i parentes ([ ]) – samsvarer med enhver forekomst av tegn i hakeparentesene. Det er mulig å bruke forskjellige typer tegn (alfanumeriske tegn): tall, bokstaver, andre spesialtegn osv.

Du må nøye velge hvilket jokertegn som skal brukes for å matche korrekte filnavn: det er også mulig å kombinere dem alle i én operasjon som forklart i eksemplene nedenfor.

Hvordan matche filnavn ved hjelp av jokertegn i Linux

For formålet med denne artikkelen vil vi bruke følgende filer for å demonstrere hvert eksempel.

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

1. Denne kommandoen samsvarer med alle filer med navn som begynner med l (som er prefikset) og slutter med en eller flere forekomster av et hvilket som helst tegn.

ls -l l*	

2. Dette eksemplet viser en annen bruk av * for å kopiere alle filnavn med prefiks med users-0 og slutter med en eller flere forekomster av 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 samsvarer med alle filer med navn som begynner med l etterfulgt av et enkelt tegn og slutter med st.sh (som er suffikset ).

ls l?st.sh	

4. Kommandoen nedenfor samsvarer med alle filer med navn som begynner med l etterfulgt av noen av tegnene i hakeparentesen, men som slutter med st.sh .

ls l[abdcio]st.sh 

Hvordan kombinere jokertegn for å matche filnavn i Linux

Du kan kombinere jokertegn for å bygge et komplekst samsvarskriterier for filnavn som beskrevet i de følgende eksemplene.

5. Denne kommandoen vil samsvare med alle filnavn med prefiks med to tegn etterfulgt av st, men som slutter med en eller flere forekomster av et hvilket som helst tegn.

ls
ls ??st*

6. Dette eksemplet samsvarer med filnavn som starter med noen av disse tegnene [clst] og slutter med én eller flere forekomster av et hvilket som helst tegn.

ls
ls [clst]*

7. I dette eksemplet er det bare filnavn som begynner med noen av disse tegnene [clst] etterfulgt av en av disse [io] og deretter en hvilken som helst enkelt tegn, etterfulgt av en t, og til slutt vil en eller flere forekomster av et tegn vises.

ls
ls [clst][io]?t*

8. Her vil filnavn med prefiks med én eller flere forekomster av et hvilket som helst tegn, etterfulgt av bokstavene tar og som slutter med én eller flere forekomster av et hvilket som helst tegn, bli fjernet.

ls
rm *tar*
ls

Hvordan matche tegnsett i Linux

9. La oss nå se på hvordan du spesifiserer et sett med tegn. Tenk på at filnavnene nedenfor inneholder informasjon om systembrukere.

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 kommandoen vil samsvare med alle filer hvis navn begynner med users-i, etterfulgt av et tall, en liten bokstav eller tall, deretter et tall og slutter med en eller flere forekomster av et hvilket som helst tegn.

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

Den neste kommandoen samsvarer med filnavn som begynner med users-i, etterfulgt av et tall, en liten eller stor bokstav eller tall, deretter et tall og slutter med en eller flere forekomster av et hvilket som helst tegn.

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

Denne kommandoen som følger vil samsvare med alle filnavn som begynner med users-i, etterfulgt av et tall, en liten eller stor bokstav eller tall, deretter en liten eller stor bokstav og slutter med en eller flere forekomster av hvilken som helst karakter.

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

Hvordan negere et sett med tegn i Linux

10. Du kan like godt negere et sett med tegn ved å bruke !-symbolet. Følgende kommando viser alle filnavn som starter med users-i, etterfulgt av et tall, et hvilket som helst gyldig filnavntegn bortsett fra et tall, deretter en liten eller stor bokstav og slutter med en eller flere forekomster av en hvilken som helst karakter.

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

Det er alt for nå! Hvis du har prøvd ut eksemplene ovenfor, bør du nå ha en god forståelse av hvordan jokertegn fungerer for å matche filnavn i Linux.

Du vil kanskje også lese disse følgende artiklene som viser eksempler på bruk av jokertegn i Linux:

  1. Hvordan trekke ut Tar-filer til spesifikke eller forskjellige kataloger i Linux
  2. 3 måter å slette alle filer i en katalog unntatt én eller få filer med utvidelser
  3. 10 nyttige tips for å skrive effektive bash-skript i Linux
  4. Hvordan bruke Awk og regulære uttrykk for å filtrere tekst eller streng i filer

Hvis du har noe å dele eller et spørsmål å stille, bruk kommentarskjemaet nedenfor.