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?

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.


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'

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"

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.