Chcę wyszukać wszystkie pliki z rozszerzeniem .sql w folderach i podfolderach (rekurencyjne).
W jaki sposób mogę to zrobić?
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ć.
find
Komenda 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$'
)
find
ma już możliwości filtrowaniaWiem, ż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 Directory
czasu,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 tutaj
find . -name '*.xml' | xargs rm
Mam nadzieję, że ktoś ci pomoże :)
źródło
find
rozumie-delete
polecenie. Nie musisz się angażowaćrm
. Lub możesz użyć-exec
polecenia, aby wywołać je bezpośrednio bez objazdu przez potok ixargs
.Jeśli nie jest zainstalowany, zainstaluj go wcześniej za pomocą:
źródło
mlocate.db
instancji, która nie jest instalowana od razu po uruchomieniu w Ubuntu (I blieve). A dlaczego nie po prostulocate '/folder/path/*.sql'
?locate
ma inne ustawienie niż wyrażenie regularne używane wegrep
locate
dopasowuje wyrażenia glob, takie jak/folder/path/*.sql
wyrażenia regularne.man locate
dostaję-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--regex
nie jest określony,PATTERN
może zawierać znaki globowania.” ( Źródło )