Wyszukiwanie w witrynie

10 praktycznych przykładów użycia symboli wieloznacznych do dopasowywania nazw plików w systemie Linux


Symbole wieloznaczne (nazywane także znakami meta) to symbole lub znaki specjalne reprezentujące inne znaki. Można ich używać z dowolnym poleceniem, takim jak polecenie ls lub polecenie rm, aby wyświetlić lub usunąć pliki spełniające podane kryteria.

Przeczytaj także: 10 przydatnych praktycznych przykładów operatorów łączenia łańcuchowego w systemie Linux

Te symbole wieloznaczne są interpretowane przez powłokę, a wyniki są zwracane do uruchomionego polecenia. W Linuksie istnieją trzy główne symbole wieloznaczne:

  • Gwiazdka (*) – dopasowuje jedno lub więcej wystąpień dowolnego znaku, włączając brak znaku.
  • Znak zapytania (?) – reprezentuje lub dopasowuje pojedyncze wystąpienie dowolnego znaku.
  • Znaki w nawiasach ([ ]) – dopasowuje dowolne wystąpienie znaku ujętego w nawiasy kwadratowe. Możliwe jest użycie różnych typów znaków (znaków alfanumerycznych): cyfr, liter, innych znaków specjalnych itp.

Musisz dokładnie wybrać, którego symbolu wieloznacznego użyć, aby dopasować prawidłowe nazwy plików: możliwe jest również połączenie ich wszystkich w jednej operacji, jak wyjaśniono w poniższych przykładach.

Jak dopasować nazwy plików za pomocą symboli wieloznacznych w systemie Linux

Na potrzeby tego artykułu użyjemy następujących plików, aby zademonstrować każdy przykład.

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

1. To polecenie dopasowuje wszystkie pliki o nazwach rozpoczynających się od l (który jest przedrostkiem) i kończących się jednym lub większą liczbą wystąpień dowolnego znaku.

ls -l l*	

2. Ten przykład pokazuje inne użycie * do kopiowania wszystkich nazw plików poprzedzonych prefiksem users-0 i kończących się jednym lub większą liczbą wystąpień dowolnego znaku.

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

3. Poniższe polecenie dopasowuje wszystkie pliki o nazwach rozpoczynających się od l, po którym następuje dowolny pojedynczy znak i kończących się na st.sh (który jest przyrostkiem ).

ls l?st.sh	

4. Poniższe polecenie dopasowuje wszystkie pliki o nazwach rozpoczynających się od l, po którym następuje dowolny znak w nawiasie kwadratowym, ale kończących się na st.sh .

ls l[abdcio]st.sh 

Jak łączyć symbole wieloznaczne, aby dopasować nazwy plików w systemie Linux

Możesz łączyć symbole wieloznaczne, aby zbudować złożone kryteria dopasowywania nazw plików, jak opisano w poniższych przykładach.

5. To polecenie dopasuje wszystkie nazwy plików poprzedzone dowolnymi dwoma znakami, po których następuje st, ale kończą się jednym lub większą liczbą wystąpień dowolnego znaku.

ls
ls ??st*

6. Ten przykład dopasowuje nazwy plików rozpoczynające się od dowolnego z tych znaków [clst] i kończące się jednym lub większą liczbą wystąpień dowolnego znaku.

ls
ls [clst]*

7. W tych przykładach tylko nazwy plików zaczynające się od dowolnego z tych znaków [clst], po którym następuje jeden z tych znaków [io], a następnie dowolny pojedynczy znak, po którym następuje t, a na końcu zostanie wyświetlone jedno lub więcej wystąpień dowolnego znaku.

ls
ls [clst][io]?t*

8. W tym przypadku nazwy plików poprzedzone jednym lub większą liczbą wystąpień dowolnego znaku, po których następują litery tar i zakończone jednym lub większą liczbą wystąpień dowolnego znaku, zostaną usunięte.

ls
rm *tar*
ls

Jak dopasować zestaw znaków w systemie Linux

9. Przyjrzyjmy się teraz, jak określić zestaw znaków. Rozważ poniższe nazwy plików zawierające informacje o użytkownikach systemu.

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

To polecenie dopasuje wszystkie pliki, których nazwa zaczyna się od users-i, po którym następuje cyfra, mała litera lub cyfra, następnie liczba i kończy się jednym lub większą liczbą wystąpień dowolnego znaku.

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

Następne polecenie dopasowuje nazwy plików zaczynające się od users-i, po którym następuje liczba, mała lub wielka litera lub cyfra, następnie liczba i kończy się jednym lub większą liczbą wystąpień dowolnego znaku.

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

Poniższe polecenie dopasuje wszystkie nazwy plików zaczynające się od users-i, po którym następuje liczba, mała lub wielka litera lub cyfra, następnie mała lub wielka litera i kończy się jednym lub większą liczbą wystąpień dowolny znak.

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

Jak zanegować zestaw znaków w systemie Linux

10. Równie dobrze możesz zanegować zestaw znaków, używając symbolu !. Poniższe polecenie wyświetla listę wszystkich nazw plików, zaczynając od users-i, po którym następuje liczba, dowolny prawidłowy znak nazwy pliku oprócz liczby, następnie mała lub wielka litera i kończy się jednym lub większą liczbą wystąpień dowolnego postać.

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

To wszystko na teraz! Jeśli wypróbowałeś powyższe przykłady, powinieneś teraz dobrze zrozumieć, jak działają symbole wieloznaczne w celu dopasowywania nazw plików w systemie Linux.

Możesz także przeczytać poniższe artykuły, które pokazują przykłady użycia symboli wieloznacznych w systemie Linux:

  1. Jak wyodrębnić pliki Tar do określonego lub innego katalogu w systemie Linux
  2. 3 sposoby usunięcia wszystkich plików w katalogu z wyjątkiem jednego lub kilku plików z rozszerzeniami
  3. 10 przydatnych wskazówek dotyczących pisania skutecznych skryptów Bash w systemie Linux
  4. Jak używać Awk i wyrażeń regularnych do filtrowania tekstu lub ciągu znaków w plikach

Jeśli chcesz się czymś podzielić lub zadać pytanie, skorzystaj z poniższego formularza komentarza.