GNU/Linux >> Znalost Linux >  >> Linux

Použijte Najít a najít k vyhledání souborů v Linuxu

Tento článek představí dva užitečné nástroje pro vyhledávání souborů v systému souborů Linux. První je find příkaz, který lze nalézt v jakékoli distribuci Linuxu, a druhý je locate , který vyžaduje instalaci.

Příkaz Najít

Příkaz find je ve výchozím nastavení součástí Linuxu. Nabízí několik parametrů pro upřesnění vyhledávání.

Najít podle jména

Nejjednodušší vyhledávací příkaz je hledat podle jména, kde se nacházíte:

$ find -name "FILE_NAME"

Můžete zadat adresář, ve kterém chcete soubor hledat:

$ find /home -name my_file.txt
$ find / -name my_other_file.txt

Vezměte v úvahu, že tento příkaz rozlišuje malá a velká písmena. Pokud chcete ignorovat případ, použijte:

$ find -iname "FILE_NAME"

V případě, že chcete hledat soubory, které neodpovídají zadanému vzoru, můžete negovat parametry vyhledávání pomocí -not parametr nebo \! . Například:

$ find -not -name "FILE_NAME_TO_AVOID"

or

$ find \! -name "FILE_NAME_TO_AVOID"

Najít podle typu souboru

file příkaz také umožňuje vyhledávat typy souborů. Některé běžné deskriptory typů souborů jsou:

  • f :běžný soubor
  • d :adresář
  • l :odkaz na symbol
  • c :znaková zařízení
  • b :blokovat zařízení

Požadovaný typ souboru následuje za -type atribut.

Chcete-li například najít všechny soubory JSON pod etc adresář:

$ find /etc -type f -name "*.json"

Najít podle velikosti souboru

K dispozici je také parametr používaný k filtrování výsledku vyhledávání v závislosti na velikosti souborů:-size .

Pro jednotky velikosti můžete použít následující přípony:

  • c :bajtů
  • k :kilobajty
  • M :megabajty
  • G :gigabajty
  • b :512bajtové bloky

A pro určení, zda mluvíte o přesné velikosti, menší než nebo větší než, použijte následující předpony:

  • Přesné vyhledávání :žádná předpona
  • Méně než :- předpona
  • Větší než :+ předpona

Chcete-li například najít všechny 3GB soubory v domovském adresáři:

$ find /home -size 3G

Pro všechny soubory menší než 3 gigabajty:

$ find /home -size -3G

Soubory větší než 3 gigabajty:

$ find /home -size +3G

Hledat podle času

Můžete také vyhledávat soubory podle jejich posledního přístupu, změn nebo časů změn.

  • Doba přístupu :-atime při posledním čtení souboru.
  • Čas úpravy :-mtime při poslední úpravě obsahu souboru.
  • Změnit čas :-ctime naposledy, kdy byla změněna metadata inodu souboru.

Je také možné porovnat s referenčním souborem a vrátit ty, které jsou novější:

$ find / -newer file_name

Pro časy jsou zadané parametry ve dnech . Lze použít stejné předpony jako při hledání podle velikosti:

$ find /home -mtime 3
$ find /home -atime -2
$ find /home -ctime +5

Chcete-li najít soubory pomocí času v minutách, můžete použít:

$ find /home -mmin 3

Vyhledat podle vlastníka a oprávnění

Existují také parametry pro vyhledání souborů podle jejich vlastníků (-user a -group ) a jejich oprávnění (-perm ):

$ find /home -user my_user
$ find /home -group my_group
$ find /home -perm 777

Definování hloubky vyhledávání

Při vyhledávání v adresáři find příkaz vrátí všechny soubory v tomto adresáři, i když jsou v jiných podadresářích. Pro ovládání této hloubky můžete definovat maximální hloubku, minimální hloubku nebo obojí.

Chcete-li například hledat pouze v horním adresáři a jedné úrovni podadresářů, můžete nastavit -maxdepth parametr na 2:

$ find -maxdepth 2 -name my_file

Chcete-li definovat minimální hloubku, kde find měli byste hledat, použijte -mindepth parametr:

$ find -mindepth 5 -name my_file

Tyto parametry lze kombinovat:

$ find -mindepth 4 -maxdepth 7 -name my_file

Provádění příkazů u výsledků

Jak je vidět v příkazech hloubky, všechny find parametry lze kombinovat a získat tak velmi specifické výsledky. Když získáte požadované výsledky, je možné nad nimi spouštět příkazy pomocí -exec parametr.

Při kombinování parametrů vyhledávání můžete také použít -and a -or možnosti přizpůsobení kritérií vyhledávání. Pokud není použit žádný z nich, -and možnost je výchozí.

Chcete-li například změnit oprávnění ke všem souborům pod /my_dir adresář, který má aktuálně 777 oprávnění k 664, použijte následující:

$ cd /my_dir
$ find . -type f -perm 777 -exec chmod 664 {} \;

Nástroj najít

locate příkaz je alternativou pro find . Rozdíl je v tom, že používá databázi souborů v souborovém systému, takže může pracovat rychleji. Chcete-li nainstalovat locate nástroj, který můžete použít:

  • Pro distribuce Ubuntu/Debian:
$ sudo apt install mlocate`
  • Pro distribuce CentOS/RHEL:
$ sudo yum install mlocate`

Locate používá k aktualizaci databáze úlohu cron, ale lze ji aktualizovat ručně pomocí:

$ sudo updatedb

Pro hledání „základního jména“, tedy že dotaz je obsažen pouze v názvu souboru a nikoli v cestě k souboru, použijte -b příznak:

$ locate -b name

Chcete-li najít soubory, které stále existují (po poslední updatedb call) použijte -e příznak:

$ locate -e name

Pro statistiky z vygenerované databáze použijte:

$ locate -S

Závěr

Hledání souborů v příkazovém řádku systému Linux může být obtížné. Nástroje uvedené v tomto článku poskytují snadný způsob práce se soubory a jejich vyhledávání. Pochopením různých parametrů může být vyhledávání tak specifické, jak chcete.

Pomocí karty Zpětná vazba můžete přidat komentáře nebo položit otázky. Můžete s námi také zahájit konverzaci.


Linux
  1. Jak používat příkaz „najít“ k hledání více názvů souborů (přípon) v systému Linux

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

  3. Rychle vyhledejte soubory v Linuxu pomocí příkazu Locate

  1. Jak hledat soubory podle velikosti a přípony?

  2. Jak používat Gui k hledání souborů v Gnome?

  3. Najděte soubor pomocí příkazů Najít a najít v Linuxu

  1. Jak používat Linuxový příkaz find k hledání souborů

  2. Jak hledat soubory pomocí regulárního výrazu ve skriptu linuxového shellu

  3. linux:hledání souborů typu *.php, které byly nedávno upraveny