/ / Używanie wyrażenia regularnego lub czegoś innego do wyszukiwania rozszerzenia pliku - wyrażenie regularne, bash, cygwin

Używanie regex lub czegoś innego do wyszukiwania rozszerzenia pliku - regex, bash, cygwin

Muszę utworzyć skrypt bash, który przeszuka dany katalog w poszukiwaniu określonych rozszerzeń plików. Rozszerzenia plików mają postać .210 .110 .311 .211 i tak dalej. Nie mogę zrobić tylko „.2 ponieważ istnieją nazwy plików, które mają to w nazwie. Czy istnieje sposób ustawienia bufora po „.2”, aby rozszerzenie miało tylko 3 znaki? Spowoduje to usunięcie wszystkich niepoprawnych wyników wyszukiwania.

W tej chwili używam find /cygdrive/x/Clients -name "*.210"

Dzięki!

Odpowiedzi:

3 dla odpowiedzi № 1

Powinieneś być w stanie używać symboli wieloznacznych. W przypadku wszystkich plików z 3-cyfrowym rozszerzeniem numerycznym powinny wystarczyć następujące informacje.

ls *.[0-9][0-9][0-9]

Jeśli chcesz tylko rozszerzenia zaczynające się od numeru 2, Spróbuj tego:

ls *.2[0-9][0-9]

2 dla odpowiedzi nr 2

Jeśli poprawnie odczytam twoje pytanie, wystarczy uruchomić następujące polecenie w katalogu docelowym:

printf "%sn" *.[0-9][0-9][0-9]

Dane wyjściowe nie obejmują pliki kropkowe. Jeśli chcesz, możesz włączyć dotglob Opcja * bash *. Bezpieczniej byłoby włączyć nullglob opcja też (patrz komentarze @ c00kiemon5ter poniżej).


1 dla odpowiedzi nr 3

możesz użyć wyrażeń regularnych, jeśli wpiszesz potok w grep

find /cygdrive/x/Clients | grep ".2dd$"

ale jest to o wiele wolniejsze niż używanie symboli wieloznacznych, o czym wspomniał Kurt S.