find jest poleceniem rekurencyjnego filtrowania obiektów w systemie plików opartym na prostym mechanizmie warunkowym. Użyj find, aby wyszukać plik lub katalog w systemie plików. Używając znacznika -exec, pliki można znaleźć i natychmiast przetworzyć za pomocą tego samego polecenia.,

Find Linux Files by Name or Extension
Use find from the command line to locate a specific file by name or extension., Poniższy przykład wyszukuje pliki *.err w katalogu /home/username/ I wszystkie podkatalogi:
find /home/username/ -name "*.err"
powinieneś zobaczyć podobne wyjście w konsoli:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
Common Linux find polecenia i składnia
find polecenie zwykle przyjmuje następującą postać:
find options starting/path expression
- atrybut
optionskontroluje zachowanie i metodę optymalizacjifind, - atrybut
starting/pathdefiniuje katalog najwyższego poziomu, w którymfindrozpoczyna filtrowanie. - atrybut
expressionkontroluje testy, które przeszukują hierarchię katalogów w celu wytworzenia danych wyjściowych.
Znajdź plik w Linuksie używając nazwy pliku
aby znaleźć plik używając nazwy pliku, użyj składnifind -name filename. Pominięcie ścieżki wyszukuje plik na całym dysku., Na przykład możesz znaleźć plik o nazwie example.err znajdujący się w Twoim katalogu /home/username za pomocą następującego polecenia:
find -name example.err
powinieneś zobaczyć podobne wyjście:
./username/example.err
znajdź plik w bieżącym katalogu za pomocą polecenia Znajdź
spójrz na przykładową strukturę katalogów i pliki. Są one wymienione w przykładach tego przewodnika.,chcesz znaleźć plik example.err w katalogu lub którymkolwiek z jego podkatalogów, możesz wydać następujące polecenie:
find . -name example.err
twoje wyjście wygląda następująco:
./example.err./directory_1/example.err
wyjście odzwierciedla directory_1 struktura katalogów:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
znajdź pliki obrazów w Linuksie za pomocą wiersza poleceń
odwołując się do struktury plików w poprzedniej sekcji, znajduje się obraz o nazwie image01.png, który znajduje się w katalogu głównym (/)s struktury katalogów.,
aby znaleźć plikimage01.png, uruchom następujące poleceniefind, które lokalizuje wszystkie pliki.png przechowywane w katalogu/.
find -name *.png
powinieneś zobaczyć podobne wyjście:
./image01.png
Zmień typ pliku obrazu i wyszukaj dowolne .jpg pliki w katalogu głównym (/):
find -name *.jpg
wyjście przypomina przykład., Zobacz przykładową strukturę katalogów w poprzedniej sekcji, aby wyświetlić lokalizację pliku.
./web_files/unnamed.jpg
Znajdź pusty plik w katalogu za pomocą linii poleceń
aby znaleźć pusty plik w katalogu za pomocą linii poleceń, wykonaj następujące polecenie:
find . -type f -empty
Jeśli nie zostanie zwrócone żadne wyjście, to nie ma pustego pliku w bieżącym katalogu.
opcje i optymalizacje wyszukiwania plików w Linuksie za pomocą wiersza poleceń
domyślna konfiguracja find ignoressymbolic links., Jeśli chcesz, aby find podążać za i zwracać dowiązania symboliczne, Dodaj opcję -L do polecenia, jak pokazano poniżej:
find -O3 -L /var/www/ -name "*.html"
To polecenie umożliwia maksymalny poziom optymalizacji (-O3) I umożliwia find podążanie za dowiązaniami symbolicznymi (-L). find przeszukuje całe drzewo katalogów poniżej/var/www/ w poszukiwaniu plików zakończonych.html.,
find optymalizuje swoją strategię filtrowania w celu zwiększenia wydajności. Trzy poziomy optymalizacji wybierane przez użytkownika są określone jako -O1, -O2I -O3. Optymalizacja -O1 jest domyślna i zmusza find do filtrowania na podstawie nazwy pliku przed uruchomieniem wszystkich innych testów.,
Optymalizacja na poziomie-O2 priorytetyzuje filtry nazw plików, tak jak w-O1, a następnie uruchamia filtrowanie wszystkich typów plików przed przystąpieniem do innych bardziej zasobochłonnych warunków. Poziom-O3 optymalizacja pozwala find Na wykonanie najcięższej optymalizacji i zmianę kolejności wszystkich testów na podstawie ich względnego kosztu i prawdopodobieństwa ich sukcesu.,
| Command | Description |
|---|---|
-O1 |
Filter based on filename first (default). |
-O2 |
File name first, then file-type., |
-O3 |
umożliwiafind automatyczne ponowne uporządkowanie wyszukiwania w oparciu o efektywne wykorzystanie zasobów i prawdopodobieństwo. sukces |
-maxdepth X |
przeszukuj bieżący katalog, a także wszystkie podkatalogi x poziomy głębokości. |
-iname |
Szukaj bez względu na wielkość liter., |
-not |
Return only results that do not match the test case. |
-type f |
Search for files. |
-type d |
Search for directories., |
Znajdź pliki w Linuksie według czasu modyfikacji za pomocą wiersza poleceń
find może filtrować hierarchię katalogów na podstawie czasu ostatniej modyfikacji pliku., Na przykład, następujące polecenie wyszukuje dowolny plik z rozszerzeniem .err, które zostało zmienione w ciągu ostatnich 7 dni:
find / -name "*err" -mtime -7
przykładowe polecenie zwraca następujące wyjście:
użyj Grep, aby znaleźć pliki w Linuksie za pomocą wiersza poleceń
find polecenie jest w stanie filtrować hierarchię katalogów tylko na podstawie nazwy pliku i metadanych. Jeśli chcesz wyszukać na podstawie zawartości pliku, użyj narzędzia likegrep., Rozważ następujący przykład:
find . -type f -exec grep "test" '{}' \; -print
To polecenie przeszukuje każdy obiekt w bieżącej hierarchii katalogów (.), który jest plikiem (-type f), a następnie uruchamia polecenie grep "test" dla każdy plik, który spełnia warunki. Pliki, które pasują są drukowane na ekranie (-print). Nawiasy klamrowe ({}) są symbolem zastępczym dla wyników wyszukiwania., {}są zamknięte w pojedynczych cudzysłowach ('), aby uniknąć przekazania grep nieprawidłowej nazwy pliku. Polecenie-exec kończy się średnikiem (;), który powinien być zabezpieczony znakiem ucieczki (\;), aby uniknąć interpretacji przez powłokę.
plik użyty w przykładzie (example.err) zawiera tekst z napisem „test”., Po uruchomieniu przykładowego polecenia zobaczysz podobne wyjście:
Grep zidentyfikował każdy plik w bieżącym katalogu roboczym, który zawiera ciąg znaków „test”.,
Uwaga
przed implementacją polecenia
findpolecenia-execmożna wygenerować podobne wyjście, jak w powyższym przykładzie, używając poleceniaxargs:find . -type f -print | xargs grep "test"
przetwarzanie i wyszukiwanie plików za pomocą polecenia Znajdź w Linuksie
-exec opcja uruchamia polecenia wobec każdego obiektu, który pasuje do find wyrażenie., Rozważ następujący przykład:
find . -name "example.err" -exec chmod o+r '{}' \;
filtruje każdy obiekt w bieżącej hierarchii (.) dla plików o nazwie rc.conf I uruchamia polecenie chmod o+r aby zmodyfikować uprawnienia do plików rc.conf div id = „6e30b51f0c” > wyniki polecenia.
przykładowe polecenie uruchamia i wykonuje opcję-exec w katalogu głównym procesufind. Użyj -execdir, aby wykonać określone polecenie w katalogu, w którym znajduje się dopasowanie., Może to złagodzić obawy związane z bezpieczeństwem i zapewnić lepszą wydajność niektórych operacji.
opcje-exec lub-execdir są uruchamiane bez dalszych monitów. Jeśli wolisz zostać poproszony przed podjęciem działania, zastąp -exec -ok lub -execdir -okdir.
jak znaleźć i usunąć Pliki za pomocą wiersza poleceń Linuksa
Uwaga
Użyj tej opcji ze szczególną ostrożnością.,
Dodaj opcję-delete na końcu dopasowanego wyrażenia, aby usunąć wszystkie pliki, które pasują. Użyj tej opcji, gdy masz pewność, że wyniki pasują Tylko do plików, które chcesz usunąć.
w poniższym przykładzie find rekurencyjnie lokalizuje wszystkie pliki w hierarchii zaczynające się od bieżącego katalogu i usuwa wszystkie pliki kończące się rozszerzeniem .err:
find . -name "*.err" -delete
masz jeszcze kilka pytań?,
Dołącz do naszej społeczności i wyślij swoje pytania do innych entuzjastów Linode i Linuksa, aby ci pomóc.
podobne pytania: