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:
- Jak wyodrębnić pliki Tar do określonego lub innego katalogu w systemie Linux
- 3 sposoby usunięcia wszystkich plików w katalogu z wyjątkiem jednego lub kilku plików z rozszerzeniami
- 10 przydatnych wskazówek dotyczących pisania skutecznych skryptów Bash w systemie Linux
- 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.