Když víte, že soubor někde na serveru existuje, ale nevíte kde, často existuje pokušení prohledávat složku po složce. Špatný nápad. V Linuxu, nalézt je k tomu určeno: vyhledávejte podle názvu, typu, velikosti, data, práv a poté jednejte, až když je výsledek jasný.
Doporučuji používat jej uvážlivě, zejména na produkčním serveru. Příkaz `find` spuštěný na kořenové úrovni může prohledat obrovské množství souborů, zobrazit chyby oprávnění a zbytečně zatížit disk. Cílem není zadat co nejširší příkaz, ale rychle zúžit oblast vyhledávání.

Začněte tím, že se podíváte na správné místo
Základní formulář je jednoduchý: zadáte počáteční složku a poté kritérium vyhledávání.
najít /etc -název "ssh_config"
Zde Linux hledá soubor s názvem ssh_config V /atd a jeho podsložky. Pokud již víte, že by soubor měl být v určitém umístění, začněte od tohoto umístění. Je to rychlejší, čitelnější a vyhnete se zbytečnému skenování celého systému.
Chcete-li ignorovat rozlišování velkých a malých písmen, použijte -jméno :
najít /var/www -iname "*.conf"
Pokud začnete od kořene, očekávejte zprávy Povolení odepřenoTo nemusí být nutně problém. Můžete je skrýt, ale nedělejte to systematicky, pokud hledáte konkrétně problém s právy.
najít / -název "nginx.conf" 2>/dev/null
Omezit vyhledávání podle typu souboru
Na serveru může název odpovídat souboru, složce, symbolickému odkazu nebo něčemu jinému. -druh aby se předešlo zbytečným výsledkům.
najít /var/log -type f -name "*.log"
najít /var/www -type d -name "mezipaměť"
najít /usr/bin -type l -name "python*"
- typ f cílí na standardní soubory. - typ d cílové složky. - typ l Zaměřuje se na symbolické odkazy. Tento malý filtr zabraňuje velkému množství šumu ve výsledcích.
Hloubku můžete také omezit, pokud nechcete jít příliš daleko ve stromu:
najít /var/www -maxdepth 2 -type d -name "mezipaměť"
To je velmi užitečné pro webové stránky, zálohy nebo uživatelské složky s mnoha podadresáři.
Před smazáním čehokoli najděte velké soubory.
Pokud serveru dochází místo na disku, funkce find může pomoci s nalezením velkých souborů. Začněte jejich výčtem, ne jejich smazáním.
najít /var -typ f -size +100M -print
najít /home -typ f -size +1G -print
Chcete-li zobrazit velikosti čitelným způsobem, můžete spustit ls -lh na každý výsledek:
najít /var -typ f -size +100M -exec ls -lh {} +
Pokud je vaším cílem uvolnit místo, nepřecházejte rovnou k rmNejprve si ověřte, co jste našli, zejména v /var/lib, /var/log nebo složky aplikací. Soubor databáze nebo mezipaměť mohou vyžadovat specifickou metodu čištění.
Pro komplexnější přístup k tématu jej můžete doplnit průvodcem na Příkazy, které se mají použít, když je místo na disku Linuxu plné.
Vyhledávání podle data změny
Pro nalezení nedávných změn jsou velmi užitečné možnosti data. Například soubory upravené za posledních 7 dní:
najít /etc -type f -mtime -7
Soubory upravené před více než 30 dny:
najít /var/log -type f -mtime +30
-mtime funguje během několika dní. Pro přesnější vyhledávání se podívejte také na -mmin, což funguje během několika minut:
najít /tmp -type f -mmin -60
To je užitečné po změně konfigurace, aktualizaci nebo skriptu, který generoval soubory, aniž by jasně sdělil kde.
Filtrovat podle práv bez porušení oprávnění
Funkce Najít může také vyhledávat na základě oprávnění. Například pro nalezení spustitelných skriptů ve složce:
najít /usr/local/bin -type f -perm /111
Chcete-li identifikovat soubory, které jsou příliš snadno dostupné, můžete hledat soubory, které může upravovat kdokoli:
najít /var/www -type f -perm -002 -exec ls -lh {};
Neopravujte seznam výsledků pomocí chmod globální bez pochopení kontextu. Oprávnění Linuxu mohou rychle vést k pádům aplikace. Pokud si potřebujete tento bod zopakovat, přečtěte si článek o rekurzivní chmod v Linuxu přesně vysvětluje, proč musíme zůstat opatrní.
Použití -exec bez spuštění katastrofy
-exec Umožňuje vám spustit příkaz na nalezených souborech. Je to mocné, takže je to také místo, kde můžete napáchat největší škody.
Vždy začněte zobrazením výsledků:
najít /tmp -type f -název "*.tmp" -print
Teprve poté, pokud je seznam správný, můžete požádat o potvrzení před smazáním:
najít /tmp -typ f -název "*.tmp" -exec rm -i {} +
Pár {} představuje nalezené soubory. + žádá find, aby pokud možno seskupil několik výsledků do stejného příkazu, čímž se zabrání spuštění procesu pro každý soubor zvlášť.
najít /var/log -type f -název "*.log" -exec ls -lh {} +
Moje rada je jednoduchá: nic automaticky nemažte, dokud si nezkontrolujete seznam. Na serveru se nevyplatí ušetřit ani vteřinu, než obnovit ze zálohy.
Rychlá metoda před spuštěním funkce find v produkčním prostředí
- začněte s co nejpřesnějším souborem;
- přidat
- typ f,- typ dNebo- typ lco nejdříve; - použití
- maximální hloubkapokud se chcete vyhnout příliš hlubokému vyhledávání; - zobrazit výsledky pomocí
-vytisknoutNebo-exec ls -lhpřed přijetím opatření; - Destruktivní příkazy si nechte na konec, pokud možno s potvrzením.
Referenční dokumentaci naleznete v manuálu GNU Findutils na adrese nalézt a stránku najít (1) z man7. Pokud potřebujete po nalezení souboru sledovat protokoly, prostudujte si průvodce na ocas pod Linuxem Tato metoda to dobře doplňuje.