Android

Jak najít soubory v Linuxu pomocí příkazového řádku

PROGRAMOVÁNÍ PRO ZELENÁČE - 9. LEKCE: Linux a náš první příkaz - Martin Podloucký ? LearnTube.cz

PROGRAMOVÁNÍ PRO ZELENÁČE - 9. LEKCE: Linux a náš první příkaz - Martin Podloucký ? LearnTube.cz

Obsah:

Anonim

Příkaz find je jedním z nejúčinnějších nástrojů arzenálu administrátorů systému Linux. Vyhledává soubory a adresáře v hierarchii adresářů na základě výrazu zadaného uživatelem a může provádět uživatelem zadanou akci pro každý odpovídající soubor.

Pomocí příkazu find můžete vyhledávat soubory a adresáře na základě jejich oprávnění, typu, data, vlastnictví, velikosti a dalších. Může být také použit v kombinaci s jinými nástroji, jako je grep nebo sed .

Linux find příkazovou syntaxi

Obecná syntaxe příkazu find je následující:

find

  • Atribut options řídí léčbu symbolických odkazů, možností ladění a metodu optimalizace. Atribut path… definuje počáteční adresář nebo adresáře, ve kterých bude hledané soubory hledat. Atribut expression se skládá z možností, vzorů vyhledávání a akce oddělené operátory.

Chcete-li hledat soubory v adresáři, musí mít uživatel vyvolávající příkaz find v tomto adresáři oprávnění ke čtení.

Podívejme se na následující příklad:

find -L /var/www -name "*.js"

  • Volba -L (options) říká příkazu find aby následoval symbolické odkazy. /var/www (cesta…) určuje adresář, který bude prohledáván. (Výraz) -name "*.js říká find prohledávání souborů končících na .js (soubory JavaScript).

Vyhledejte soubory podle názvu

Hledání souborů podle názvu je pravděpodobně nejčastějším použitím příkazu find . Chcete-li najít soubor podle jeho názvu, použijte volbu -name za názvem -name souboru.

Chcete-li například vyhledat soubor s názvem document.pdf v adresáři /home/linuxize , použijte následující příkaz:

find /home/linuxize -type f -name document.pdf

Chcete-li spustit vyhledávání nerozlišující velká a malá písmena, změňte volbu -name pomocí -iname :

find /home/linuxize -type f -iname document.pdf

Výše uvedený příkaz bude odpovídat „Document.pdf“, „DOCUMENT.pdf“..etc.

Vyhledejte soubory podle přípony

Hledání souborů podle přípony je stejné jako vyhledávání souborů podle názvu. Chcete-li například najít všechny soubory končící na .log.gz v adresáři /var/log/nginx , můžete použít:

find /var/log/nginx -type f -name '*.log.gz'

Je důležité zmínit, že když použijete zástupný znak, musíte buď uvozit vzorek, nebo uniknout znaku hvězdičky * se zpětným lomítkem \ , aby nebyl interpretován shellem.

Chcete-li najít všechny soubory, které neodpovídají regexu *.log.gz , můžete použít volbu *.log.gz . Chcete-li například najít všechny soubory, které nekončí v *.log.gz , použijte:

find /var/log/nginx -type f -not -name '*.log.gz'

Vyhledejte soubory podle typu

Někdy budete možná muset hledat konkrétní typy souborů, jako jsou běžné soubory, adresáře nebo odkazy. V Linuxu je všechno soubor.

Chcete-li hledat soubory na základě jejich typu, použijte volbu -type a jeden z následujících deskriptorů k určení typu souboru:

  • f : běžný soubor d : adresář l : symbolický odkaz c : znaková zařízení b : blokovací zařízení p : pojmenovaný kanál (FIFO) s : socket

Chcete-li například vyhledat všechny adresáře v aktuálním pracovním adresáři, použijte:

find. -type d

Běžným příkladem by bylo rekurzivně změnit oprávnění souboru webového serveru na 644 a oprávnění adresáře na 755 pomocí chmod :

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Vyhledejte soubory podle velikosti

Chcete-li najít soubory na základě velikosti souboru, předejte parametr -size spolu s kritérii velikosti. Pro určení velikosti souboru můžete použít následující přípony:

  • b : 512 bajtových bloků (výchozí) c : bajtů w : dvoubajtových slov k : kilobajtů M : megabajtů G : gigabajtů

Následující příkaz najde všechny soubory s přesně 1024 bajty v adresáři /tmp :

find /tmp -type f -size 1024c

Příkaz find také umožňuje vyhledávat soubory, které jsou větší nebo menší než zadaná velikost.

V následujícím příkladu hledáme všechny soubory menší než 1MB uvnitř aktuálního pracovního adresáře. Všimněte si mínus - symbol před hodnotou velikosti:

find. -type f -size -1M

find. -type f -size +1M

Můžete dokonce hledat soubory v rozsahu velikostí. Následující příkaz najde všechny soubory mezi 1 a 2MB :

find. -type f -size +1M -size 21M

Vyhledejte soubory podle data změny

Příkaz find může také vyhledávat soubory na základě jejich poslední úpravy, přístupu nebo změny času.

Stejné jako při vyhledávání podle velikosti, použijte symboly plus a mínus pro „větší než“ nebo „menší než“.

Řekněme, že před několika dny jste upravili jeden z konfiguračních souborů holubice, ale zapomněli jste na který. Všechny soubory můžete snadno filtrovat v adresáři /etc/dovecot/conf.d který končí /etc/dovecot/conf.d .conf a za posledních pět dní byl změněn pomocí:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Zde je další příklad filtrování souborů na základě data modifikace pomocí volby -daystart . Níže uvedený příkaz zobrazí seznam všech souborů v adresáři /home které byly změněny před 30 nebo více dny:

find /home -mtime +30 -daystart

Vyhledejte soubory podle oprávnění

Volba -perm vám umožňuje hledat soubory na základě oprávnění k souborům.

Chcete-li například najít všechny soubory s oprávněními přesně 775 v adresáři /var/www/html , použijte:

find /var/www/html -perm 644

Numerický režim můžete předponou mínus - nebo lomítko / .

Když je lomítko / použito jako předpona, pak alespoň jedna kategorie (uživatel, skupina nebo jiné) musí mít alespoň odpovídající bity nastavené pro soubor, aby odpovídal.

Zvažte následující příklad příkazu:

find. -perm /444

Výše uvedený příkaz bude odpovídat všem souborům s oprávněními pro čtení nastavenými pro uživatele, skupinu nebo jiné.

Pokud je jako předpona použita mínus - musí být soubor nastaven tak, aby odpovídal alespoň zadaným bitům. Následující příkaz vyhledá soubory, které mají oprávnění ke čtení a zápisu pro vlastníka a skupinu a jsou čitelné ostatními uživateli:

find. -perm -664

Vyhledejte soubory podle vlastníka

Chcete-li najít soubory vlastněné konkrétním uživatelem nebo skupinou, použijte volby -user a -group .

Chcete-li například vyhledat všechny soubory a adresáře vlastněné linuxize uživatele, měli byste spustit:

find / -user linuxize

Zde je příklad z reálného světa. Řekněme, že chcete najít všechny soubory vlastněné uživatelem www-data a změnit vlastnictví uzavřených souborů z www-data na nginx :

find / -user www-data -type f -exec chown nginx {} ;

Vyhledejte a odstraňte soubory

Chcete-li odstranit všechny odpovídající soubory, připojte možnost -delete na konec výrazu shody.

Ujistěte se, že tuto možnost používáte, pouze pokud jste si jisti, že výsledek odpovídá souborům, které chcete odstranit. Před použitím volby -delete je vždy vhodné vytisknout odpovídající soubory.

Například pro smazání všech souborů končících .temp z /var/log/ byste použili:

find /var/log/ -name `*.temp` -delete Použijte možnost -delete s mimořádnou opatrností. Příkaz find je vyhodnocen jako výraz a pokud nejprve přidáte volbu -delete , odstraní příkaz vše pod počátečním bodem, který jste určili.

Pokud jde o adresáře, find může odstranit pouze prázdné adresáře stejné jako rmdir .

Závěr

Ukázali jsme vám, jak používat příkaz find s různými možnostmi a kritérii.

Tento článek by vám měl poskytnout základní informace o tom, jak vyhledávat soubory v systémech Linux. Můžete také navštívit stránku find a přečíst si všechny další výkonné možnosti příkazu find .

najít terminál