Jak znaleźć pliki w Linuksie używając wiersza poleceń

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ę optymalizacji find ,
  • atrybutstarting/path definiuje katalog najwyższego poziomu, w którymfind rozpoczyna filtrowanie.
  • atrybutexpression 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, -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 find polecenia -exec można wygenerować podobne wyjście, jak w powyższym przykładzie, używając polecenia xargs:

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:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *