GNU/Linux >> Znalost Linux >  >> Linux

Najít příkaz v Linuxu (Najít soubory a adresáře)

find command je jedním z nejmocnějších nástrojů v arzenálu správců systému Linux. Vyhledává soubory a adresáře v hierarchii adresářů na základě uživatelem zadaného výrazu a může provádět uživatelem specifikované akce s každým odpovídajícím souborem.

Můžete použít find k vyhledání souborů a adresářů na základě jejich oprávnění, typu, data, vlastnictví, velikosti a dalších. Lze jej také kombinovat s dalšími nástroji, jako je grep nebo sed .

find Syntaxe příkazu #

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

find [options] [path...] [expression]
  • options atribut řídí zacházení se symbolickými odkazy, možnosti ladění a metodu optimalizace.
  • path... atribut definuje počáteční adresář nebo adresáře, kde bude find hledat soubory.
  • expression atribut se skládá z možností, vyhledávacích vzorů a akcí oddělených operátory.

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

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

find -L /var/www -name "*.js"
  • Volba -L (options) říká find příkaz k následování symbolických odkazů.
  • /var/www (cesta…) určuje adresář, který bude prohledán.
  • (výraz) -name "*.js říká find pro vyhledávání souborů končících na .js (JavaScriptové soubory).

Najít soubory podle názvu #

Hledání souborů podle názvu je pravděpodobně nejběžnější použití find příkaz. Chcete-li najít soubor podle názvu, použijte -name možnost následovaná názvem souboru, který hledáte.

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

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

Chcete-li spustit vyhledávání bez rozlišení velkých a malých písmen, změňte -name možnost s -iname :

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

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

Najít soubory podle přípony #

Vyhledává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 uvnitř /var/log/nginx adresář, zadejte:

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

Je důležité zmínit, že musíte buď citovat vzor, ​​nebo ukončit hvězdičku * symbol se zpětným lomítkem \ aby to nebylo interpretováno shellem, když použijete zástupný znak.

Chcete-li najít všechny soubory, které neodpovídají regulárnímu výrazu *.log.gz můžete použít -not volba. Chcete-li například najít všechny soubory, které nekončí na *.log.gz byste použili:

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

Najít soubory podle typu #

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

Chcete-li vyhledávat soubory podle jejich typu, použijte -type volba 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 :blokovat zařízení
  • p :pojmenovaná roura (FIFO)
  • s :zásuvka

Například pro nalezení všech adresářů v aktuálním pracovním adresáři byste použili:

find . -type d

Běžným příkladem je rekurzivní změna oprávnění souboru webu na 644 a oprávnění k adresáři 755 pomocí chmod příkaz:

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

Najít soubory podle velikosti #

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

  • b :512bajtové bloky (výchozí)
  • c :bajtů
  • w :dvoubajtová slova
  • k :kilobajty
  • M :Megabajty
  • G :Gigabajty

Následující příkaz najde všechny soubory přesně 1024 bajtů uvnitř /tmp adresář:

find /tmp -type f -size 1024c

find příkaz 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

Pokud chcete hledat soubory o velikosti větší než 1MB , pak musíte použít plus + symbol:

find . -type f -size +1M

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

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

Najít soubory podle data úpravy #

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

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

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

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

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

find /home -mtime +30 -daystart

Najít soubory podle oprávnění #

-perm umožňuje vyhledávat soubory na základě oprávnění k souboru.

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

find /var/www/html -perm 644

Číselný režim můžete předponovat mínus - nebo lomítko / .

Když lomítko / se používá jako předpona, pak alespoň jedna kategorie (uživatel, skupina nebo další) musí mít nastavené alespoň příslušné bity, aby se soubor shodoval.

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

find . -perm /444

Výše uvedený příkaz porovná všechny soubory s oprávněními ke čtení nastavenými pro uživatele, skupinu nebo ostatní.

Pokud je mínus - je použit jako prefix, pak aby se soubor shodoval, musí být nastaveny alespoň zadané bity. 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é pro ostatní uživatele:

find . -perm -664

Najít soubory podle vlastníka #

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

Chcete-li například vyhledat všechny soubory a adresáře vlastněné uživatelem linuxize , spustíte:

find / -user linuxize

Zde je příklad ze skutečného světa. Řekněme, že chcete najít všechny soubory vlastněné uživatelem www-data a změnit vlastnictví odpovídajících souborů z www-data na nginx :

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

Najít a smazat soubory #

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

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

Chcete-li například odstranit všechny soubory končící na .temp z /var/log/ , použili byste:

find /var/log/ -name `*.temp` -delete
Použijte -delete možnost s extrémní opatrností. find příkaz je vyhodnocen jako výraz a pokud přidáte -delete Pokud zvolíte možnost první, příkaz odstraní vše pod vámi zadanými počátečními body.

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

Závěr č.

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

Tento článek by vám měl poskytnout základní informace o tom, jak najít soubory ve vašich systémech Linux. Můžete také navštívit find manuálovou stránku a přečtěte si o všech dalších výkonných možnostech find příkaz.

Pokud máte nějaké dotazy nebo připomínky, zanechte prosím níže komentář.


Linux
  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Jak zjistit nejlepší adresáře a soubory (místo na disku) v Linuxu

  3. Kopírování souborů a adresářů v Linuxu

  1. Najděte soubory a adresáře v Linuxu jako profík

  2. Najděte největší soubory a adresáře v Linuxu

  3. Jak najít a odstranit prázdné adresáře a soubory v Linuxu

  1. Jak odstranit adresáře a soubory pomocí Linuxu

  2. Jak odstranit soubory a adresáře v Linuxu z příkazového řádku

  3. Linux Odstraňte soubory a adresáře