Jak znaleźć wszystkie pliki z tym samym rozszerzeniem w katalogu

61

Jestem początkującym w systemie Linux i chcę wyszukać wszystkie .confpliki w /etc/.

Próbowałem grep -r *.conf /etc, ale wynik jest nieprawidłowy.

Co ja robię źle?

Adrian George
źródło

Odpowiedzi:

94

Wystarczy nacisnąć Ctrl+ Alt+ Tna klawiaturze, aby otworzyć Terminal. Po otwarciu uruchom poniższe polecenie:

find . -type f -name "*.txt"

Spowoduje to wyświetlenie listy wszystkich plików z rozszerzeniem .txt.

.Na początku oznacza katalog bieżący. findprzeszukuje rekurencyjnie we wszystkich katalogach pod podaną ścieżką. Jeśli chcesz, aby wyszukiwanie rozpoczynało się w innym miejscu niż bieżący katalog roboczy, podaj ścieżkę, na przykład:

find /etc -type f -name "*.conf"

Przeszukuje /etckatalog i wszystkie jego podkatalogi w poszukiwaniu zwykłych plików z .confrozszerzeniem.

Mitch
źródło
1
To działa. Czy są jakieś alternatywy dla tego polecenia?
Adrian George
1
Możesz spojrzeć na Locate .
Mitch
@AdrianGeorge findjest tak szeroko stosowany, tak dobrze udokumentowany i ma tak wiele postów StackOverflow / Exchange, że trudniej byłoby znaleźć coś łatwiejszego do pracy. Prawie wszystko, co chcesz zrobić, zostało gdzieś spisane online.
BallpointBen,
6

Osobiście użyłbym find, ale możesz też globować dla tych rzeczy:

shopt -s globstar
ls /etc/{,**/}*.conf

Możesz użyć lokalizowania i jest szybki, ale nie jest niezawodny.

locate '/etc/**.conf'
Oli
źródło
Dlaczego nie jest locateniezawodny?
Giraldi
1
@Giraldi locatepolega na bazie danych mlocate, która została niedawno zaktualizowana, aby była dokładna. Domyślnie aktualizacja jest zaplanowana tylko raz dziennie (choć można to wymusić ręcznie updatedb).
Oli
@Oli nieprawda na Macach, prawda? think mac os aktualizuje
mlocate
6

grepprzeszukuje zawartość plików, a nie nazwy plików.

Aby znaleźć wszystkie .confpliki /etc/, znajdziesz:

find /etc -name "*.conf"
użytkownik184890
źródło