Odpowiedzi:
Lub...
find $directory_name -name \*.sql
Na przykład
find / -name \*.sql
Lub
find ~ \*.sql
(gdzie ~ oznacza / home / twoja_nazwa_użytkownika /) lub ...
find /usr/local/share/ \*.sql
i tak dalej.
Uruchom to w wierszu polecenia:
cd / && find | grep '\.sql$'
Zmień „/” na katalog, który chcesz przeszukać.
findKomenda jest w stanie wykonać zadanie bez grep (za pomocą dodatkowych opcji), ale uważam, że powyżej użycie bardziej wygodne.
W kolejności powyższe polecenie:
cd /)find)| grep '\.sql$')findma już możliwości filtrowania
Wiem, że jest to stary post, ale jestem w tym całkiem nowy i znalazłem łatwy sposób na znalezienie wszystkich plików określonego rozszerzenia w katalogu i jego podkatalogach potomnych. Cóż, najpierw przejdź do tego parent Directoryczasu, find . -name '*.sql'a znajdziesz wszystkie pliki z rozszerzeniem .sql w katalogach i podkatalogach.
W moim przypadku chciałem usunąć wszystkie pliki .xml z katalogu i jego podkatalogów, więc zrobiłem więcej, dodałem usuwanie tak jak tutajfind . -name '*.xml' | xargs rm
Mam nadzieję, że ktoś ci pomoże :)
findrozumie -deletepolecenie. Nie musisz się angażować rm. Lub możesz użyć -execpolecenia, aby wywołać je bezpośrednio bez objazdu przez potok i xargs.
locate -br \\.sql$ | egrep '^/folder/path/'
Jeśli nie jest zainstalowany, zainstaluj go wcześniej za pomocą:
sudo apt install mlocate
mlocate.db instancji, która nie jest instalowana od razu po uruchomieniu w Ubuntu (I blieve). A dlaczego nie po prostu locate '/folder/path/*.sql'?
locatema inne ustawienie niż wyrażenie regularne używane wegrep
locate dopasowuje wyrażenia glob, takie jak /folder/path/*.sql wyrażenia regularne.
man locatedostaję-r, --regexp REGEXP - Search for a basic regexp REGEXP więc założyłem, że to regex. W każdym razie próbowałem twojego „globalnego wyrażenia”, ale nie działa, przepraszam
--regexnie jest określony, PATTERNmoże zawierać znaki globowania.” ( Źródło )