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
options
kontroluje zachowanie i metodę optymalizacjifind
, - atrybut
starting/path
definiuje katalog najwyższego poziomu, w którymfind
rozpoczyna filtrowanie. - atrybut
expression
kontroluje 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
, -O2
I -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
find
polecenia-exec
moż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: