Dopasowanie wzorca bash

Dopasowanie wzorca bash

Dopasowanie wzorca Bash to niezbędna koncepcja, która przydaje się przy wyborze różnych nazw plików z katalogu i sprawdzanie, czy ciąg pasuje do danego formatu. Niezależnie od tego, czy zaczynasz od dopasowywania wzoru BASH, czy też szukasz swoich umiejętności, ten przewodnik obejmuje różne sposoby i porady dotyczące dopasowywania wzorów.

Dopasowanie wzoru

Bash oferuje głównie dwa rodzaje dopasowywania wzorów: Globs I Rozszerzone globry. Oba oferują proste sposoby wyboru nazw plików i sprawdzenie różnych ciągów w stosunku do określonych reguł. Jednak Bash obsługuje również za pomocą Regex, Zwłaszcza podczas pracy z skryptami w celu sprawdzenia walidacji różnych danych wejściowych i analizowania użytkowników.

1. Dopasowywanie wzorców bash do globów

Dopasowanie wzorców globu obejmuje głównie sprawdzanie określonych nazw plików w danym katalogu. Są nazywane dzikie karty. Istnieją trzy rodzaje wzorów globu Bash:

2. Gwiazdka (*)

Jest używany, gdy chcesz dopasować zero lub więcej nazw plików.

Miejmy kilka przykładów.

Sprawdzanie nazw plików rozpoczynających się lub kończąc na danym znaku

Na przykład, jeśli potrzebujemy wyszukiwania pliku, począwszy od L Lub Li, moglibyśmy użyć następujących poleceń:

ls l*
ls li*

Zwróć uwagę, w jaki sposób pasuje do wszystkich nazw plików, które zaczynają się od Li lub L w obecnym katalogu, w tym katalogów.

Aby dopasować się tylko do katalogów, dodaj / after Wildcard, jak pokazano następująco:

Podobnie, jeśli potrzebujemy dopasowania nazw plików ten koniec z daną postacią lub znaki, moglibyśmy użyć wieloznacznej karty, jak pokazano na poniższej ilustracji. W tym przykładzie dopasowujemy nazwy plików, które kończą się mi.

ls *e

Załóżmy, że nie masz pewności nazwy pliku, której chcesz wyszukać, ale znasz podane znaki. Jak w poniższym przykładzie, nadal możesz dopasować nazwy plików, dodając wieloznaczną kartę przed i po znakach.

Dopasowaliśmy nazwy plików, które zawierają Nux Słowo kluczowe w ich imieniu.

Sprawdzanie plików z danym rozszerzeniem

Dzięki dopasowaniu wzorców Bash możesz zlokalizować pliki z danym rozszerzeniem. Na przykład, jeśli chcesz znaleźć wszystkie pliki PDF lub pliki tekstowe. W takim przypadku dodajesz dziką kartę przed rozszerzeniem pliku. Zobaczmy poniższy przykład, aby dopasować wszystkie pliki tekstowe:

LS *.tekst

Wszystkie pliki tekstowe są dopasowane, jak pokazano następująco:

3. Znak zapytania (?)

Znak zapytania Wildcard pasuje do nazw plików, które pasują do jednego postaci. Musisz jednak znać liczbę znaków, które ma dana nazwa pliku, taka, że ​​każda z nich „?”Reprezentuje każdą postać.

Na przykład, aby dopasować nazwę pliku do czterech postaci, ale znamy ostatnią postać, możemy mieć następujący przykład:

LS ???mi

Podobnie, aby znaleźć dane rozszerzenie, w którym znasz liczbę znaków nazwy pliku, możemy użyć następującego polecenia:

LS ?????.tekst

4. Nawiasy kwadratowe []

Gdy chcesz bardziej szczegółowe wyszukiwanie, takie jak dopasowanie nazw plików zawierających podane postacie, postacie do dopasowania można dodać w nawiasach kwadratowych.

Na przykład, aby dopasować nazwy plików zawierających dowolne znaki lub liczby określone niezależnie od rozszerzenia, możemy mieć następujące polecenie:

ls [e-m]*.*

Tutaj dopasowujemy nazwy plików zawierające dowolną znak z E do M i ma jakiekolwiek rozszerzenie.

Jeśli chcesz dopasować nazwy plików, które zaczynają się od określonych postaci, powiedzmy, zaczynając od [F-L] i mając dane rozszerzenie, możemy użyć następującego wzorca:

LS [F-L]*.tekst*

5. Dopasowywanie wzorca rozszerzonego do rozszerzonych globów

Rozszerzone kulki mają ogromne podobieństwo do wyrażeń regularnych. Są jednak domyślnie wyłączone. Kiedy musisz ich użyć, musisz je włączyć za pomocą następującego polecenia:

$ shopt -s extglob

Rozszerzone kulki obejmują:

6. ?(Wzory)

Jest używany podczas dopasowania z zero lub jeden Występowanie określonego wzoru.

Na przykład, jeśli chcesz dopasować wszystkie nazwy plików do danego rozszerzenia lub tych, które zawierają określone znaki w nazwie, możemy mieć następujące polecenie:

$ ls ?(* Nux* |*.cii)

7. *(Wzory)

Jest używany podczas dopasowania z zero lub więcej Występowanie określonego wzoru.

Na przykład moglibyśmy użyć następującego polecenia, aby dopasować nazwy plików, które zaczynają się od zera lub więcej „f” i są plikami tekstowymi:

$ ls *(f).tekst

8. +(Wzory)

Jest używany podczas dopasowania z jeden lub więcej Występowanie określonego wzoru.

Jeśli uruchomimy poprzednie polecenie, pamiętaj, że pasuje ono tylko do nazw plików, które muszą zawierać co najmniej jeden „f”, co oznacza, że .tekst Plik nie będzie dopasowany.

$ ls +(f).tekst

9. @(wzory)

Jest używany podczas dopasowania do jednego wystąpienia określonego wzoru.

Jeśli musimy tylko dopasować nazwy plików, które zawierają tylko jeden „F” przy użyciu tego samego wzoru, który jest używany w poprzednim przykładzie, moglibyśmy użyć @, jak pokazano następująco:

$ ls @(f).tekst

10. !(Wzory)

Jest używany, gdy chcesz dopasować wszystko inne, co nie pasuje do określonego wzoru.

Miejmy przykład, w którym chcemy dopasować wszystkie nazwy plików, które nie mają określonego wzoru. W tym przykładzie dopasowujemy wszystkie nazwy plików, które nie są plikami tekstowymi lub skryptami bash. Polecenie jest następujące:

$ ls !(*.TXT |*.cii)

Wniosek

Ten przewodnik przedstawił dopasowanie wzoru Bash i różne przykłady, aby rozumieć, jak pracować z różnymi opcjami dopasowywania wzorców. Korzystając z tego fundamentu, możesz rozwinąć dopasowanie wzoru Bash i użyć tej samej logiki, gdy chcesz dopasować różne wzory na terminalu lub podczas tworzenia skryptów Bash.