find je příkaz pro rekurzivní filtrování objektů v systému souborů založených na jednoduchý podmíněný mechanismus. Pomocí find vyhledejte soubor nebo adresář v systému souborů. Pomocí příznaku -exec lze soubory najít a okamžitě zpracovat ve stejném příkazu.,

Find Linux Files by Name or Extension
Use find from the command line to locate a specific file by name or extension., Následující příklad vyhledá *.err soubory /home/username/ adresář a všechny podřízené adresáře:
find /home/username/ -name "*.err"
měli Byste vidět podobný výstup v konzoli:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
Společné Linux Najít Příkazy a Syntaxe
find příkaz obvykle následující podobu:
find options starting/path expression
-
optionsatribut určuje chování a optimalizace metodyfindproces., -
starting/pathatribut definuje adresář na nejvyšší úrovni, kdefindzačíná filtrování. -
expressionatribut kontroly, testy, vyhledávání adresář hierarchie produkovat výstup.
Najít Soubor v Linuxu Pomocí Souboru
najít soubor pomocí názvem, použijte syntaxi find -name filename. Vynechání cesty vyhledá soubor na celém disku., Například, můžete najít soubor, pojmenovaný example.err se nachází v /home/username adresář s následujícím příkazem:
find -name example.err
měli Byste vidět podobný výstup:
./username/example.err
vyhledat Soubor v Aktuálním Adresáři Pomocí Příkazu Najít
podívejte se na příklad struktury adresáře a soubory. Jsou uvedeny v příkladech této příručky.,chcete najít soubor example.err v adresáři, nebo některý z jeho podadresářů, můžete se vydat následující příkaz:
find . -name example.err
výstup je podobná následující:
./example.err./directory_1/example.err
výstup odráží directory_1 adresářová struktura:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
Najít Image Soubory v Linux Pomocí Příkazového Řádku
Odkazující struktura souborů v předchozí části, tam je obraz s názvem image01.png, který je umístěn v kořenovém adresáři (/)s adresářové struktury.,
najít soubor image01.png, spusťte následující find příkaz, který vyhledá všechny .png soubory uložené uvnitř / adresář.
find -name *.png
měli Byste vidět podobný výstup:
./image01.png
Změnit typ souboru obrázku a podívejte se na všechny .jpg soubory v kořenovém adresáři (/):
find -name *.jpg
výstup se podobá příkladu., Podívejte se na příklad adresářové struktury v předchozí části pro zobrazení umístění souboru.
./web_files/unnamed.jpg
Najít Prázdný Soubor v Adresáři Pomocí Příkazového Řádku
najít prázdný soubor v adresáři pomocí příkazového řádku následující příkaz:
find . -type f -empty
Pokud žádný výstup je vrácen, pak není prázdný soubor ve vašem aktuálním adresáři.
Možnosti a Optimalizace pro Hledání Souborů v Linuxu Pomocí Příkazového Řádku
výchozí nastavení pro find ignoressymbolic odkazy., Pokud chcete, find sledovat a návrat symbolické odkazy, přidejte -L možnost příkazu, jak je uvedeno níže:
find -O3 -L /var/www/ -name "*.html"
Tento příkaz umožňuje maximální optimalizaci úrovně (-O3) a umožňuje find následovat symbolické odkazy (-L). find prohledává celý strom adresářů pod /var/www/ pro soubory, které končí .html.,
find optimalizuje svou strategii filtrování pro zvýšení výkonu. Tři uživatelsky volitelná optimalizace úrovně jsou specifikovány jako -O1 -O2 -O3. -O1 optimalizace je výchozí a síly find filtrovat na základě názvem před spuštěním všech ostatních testů.,
Optimalizace -O2 úroveň upřednostňuje názvem filtry, jako v -O1, a pak běží všechny typu souboru, filtrování před pokračováním s další více zdrojů náročné podmínky. Úroveň -O3 optimalizace umožňuje find provést nejzávažnější optimalizace a uspořádává všechny testy, na základě jejich relativní náklady a pravděpodobnost jejich úspěchu.,
| Command | Description |
|---|---|
-O1 |
Filter based on filename first (default). |
-O2 |
File name first, then file-type., |
-O3 |
Povolit find automaticky re-pořadí vyhledávání na základě účinného využívání zdrojů a pravděpodobnost. úspěch |
-maxdepth X |
Vyhledávání v aktuálním adresáři i všech podadresářích X úrovní. |
-iname |
Hledání bez ohledu na text případ., |
-not |
Return only results that do not match the test case. |
-type f |
Search for files. |
-type d |
Search for directories., |
Najít Soubory v Linuxu tím, že Čas Modifikace Pomocí Příkazového Řádku
find příkaz můžete filtrovat adresář hierarchie založená na tom, kdy byl soubor naposledy změněn., Například, následující příkaz najde soubor s .err rozšíření, která byla upravena v posledních 7 dnů:
find / -name "*err" -mtime -7
příklad příkaz vrátí následující výstup:
Použití Grep Najít Soubory v Linux Pomocí Příkazového Řádku
find příkaz je pouze schopen filtrovat hierarchie adresářů na základě názvu souboru a metadata. Pokud potřebujete hledat na základě obsahu souboru, použijte nástroj jakogrep., Zvažte následující příklad:
find . -type f -exec grep "test" '{}' \; -print
Tento příkaz vyhledá každý objekt v aktuálním adresáři hierarchie (.), že je soubor (-type f) a pak spustí příkaz grep "test" pro každý soubor, který splňuje podmínky. Soubory, které odpovídají, jsou vytištěny na obrazovce (-print). Kudrnaté rovnátka ({}) Jsou zástupný symbol pro výsledky najít shodu., {} jsou uzavřeny do jednoduchých uvozovek ('), aby se zabránilo předání grep chybně názvem. -exec příkaz je ukončen středníkem (;), které by měly být escapovány (\;), aby se zabránilo výklad shell.
soubor použitý v příkladu (example.err) má uvnitř text, který říká „test“., Když spustíte příkaz příklad, uvidíte podobný výstup:
Grep identifikoval každý soubor v aktuálním pracovním adresáři, který obsahuje řetězec „test“.,
Před
findpříkaz je provedení-execmožnost, že by mohl přinést podobný výstup na příkladu výše pomocíxargspříkaz:find . -type f -print | xargs grep "test"
Proces a Najít Soubory Pomocí Příkazu Najít v Linuxu
-exec volba spouští příkazy proti každý objekt, který odpovídá find výraz., Zvažte následující příklad:
find . -name "example.err" -exec chmod o+r '{}' \;
filtry každý objekt v současné hierarchii (.) pro soubory rc.conf běží chmod o+r příkaz změnit oprávnění souboru. find příkaz výsledky.
příkaz example spustí a provede volbu -exec v kořenovém adresáři procesufind. Použijte -execdir k provedení zadaného příkazu v adresáři, kde je shoda umístěna., To může zmírnit bezpečnostní obavy a u některých operací dosáhnout lepšího výkonu.
-exec nebo-execdir možnosti běží bez dalších výzev. Pokud chcete být vyzváni před opatření, vyměňte -exec -ok nebo -execdir -okdir.
jak najít a odstranit soubory pomocí příkazového řádku Linux
upozornění
tuto možnost používejte s velkou opatrností.,
Přidat možnost -delete do konce zápasu výraz odstranit všechny soubory, které odpovídají. Tuto možnost použijte, pokud jste si jisti, že výsledky odpovídají pouze souborům, které chcete odstranit.
V níže uvedeném příkladu find rekurzivně vyhledá všechny soubory v hierarchii začíná na aktuální adresář a odstraní všechny soubory, které končí na .err rozšíření:
find . -name "*.err" -delete
Ještě pár otázek?,
Připojte se k naší komunitě a zveřejněte své dotazy pro další nadšence Linode a Linux, kteří vám pomohou.
související otázky: