Tato příručka vám ukáže, jak používat příkazy „najít“ a „vyhledat“ k vyhledání souborů a adresářů v systémech souborů Linux.
Obsah
- Najděte soubory a adresáře v systému Linux pomocí příkazu find
- Najít soubory podle názvu
- Najít soubory podle dílčího názvu
- Najít soubory podle velikosti
- Vyhledání souborů pomocí časových razítek
- Najít soubory podle vlastníka
- Najít soubory podle oprávnění
- Najít adresáře podle názvu
- Najděte soubory a adresáře v systému Linux pomocí příkazu locate
- Najít soubory podle názvu
- Najít soubory podle dílčího názvu
- Omezit výsledky vyhledávání
- Zobrazte počet odpovídajících záznamů
- Získejte informace o lokalizační databázi
- Závěr
Jsou chvíle, kdy chcete získat přístup ke konkrétnímu souboru, ale nemůžete ho najít ve svém systému Linux. I když existuje mnoho způsobů, jak můžeme vyhledávat a lokalizovat soubory a adresáře v Linuxu, nejjednodušší a nejrychlejší je pravděpodobně přes terminál.
find
command je jedním z nejdůležitějších a často používaných nástrojů příkazového řádku v Linuxu.
Najít soubory a adresáře v Linuxu pomocí příkazu find
Linux find
command je výkonný nástroj, který umožňuje správcům systému vyhledávat a spravovat soubory a adresáře na základě široké škály vyhledávacích kritérií. Podporuje vyhledávání podle souboru, složky, názvu, data vytvoření, data modifikace, vlastníka a oprávnění.
find
příkaz se používá k vyhledání souborů a adresářů a provádění následných operací s nimi. Rekurzivně vyhledává soubory a adresáře v každé cestě. Když tedy find
příkaz narazí na adresář uvnitř dané cesty, hledá v něm další soubory a adresáře.
Najít soubory podle názvu
Obecná syntaxe find
příkaz je:
find [path] [options] [expression]
Pojďme si tuto syntaxi rozebrat:
path
: Definuje počáteční adresář, kde bude funkce find vyhledávat soubory.options
: Ovládáfind
chování procesu a metoda optimalizace.expression
: Tento atribut se skládá z možností, vzorů vyhledávání a akcí oddělených operátory.
Nejběžnějším použitím příkazu find je hledání souboru podle jeho názvu. -type f
sděluje systému, že hledáme Soubor. Chcete-li najít soubor pomocí názvu souboru, použijte -name
příznak s výchozím příkazem.
Chcete-li například vyhledat soubor s názvem report.pdf
v /home
adresář, použijete následující příkaz:
find /home -type f -name report.pdf
Jak víte, Linux rozlišuje velká a malá písmena v názvech souborů , takže pokud hledáte soubor s názvem Report.pdf
, příkaz uvedený výše nevrátí žádné výsledky. V takovém případě budete muset použít -iname
možnost namísto -name
.
-iname
spouští vyhledávání bez rozlišení malých a velkých písmen , takže můžeme udělat toto:
find /home -type f -iname report.pdf
Tento příkaz vyhledá soubor, který má některý z následujících názvů:report.pdf
, Report.pdf
, REPORT.pdf
, atd.
Najít soubory podle dílčího názvu
Můžete použít metaznaky názvu souboru jako je hvězdička (*
), ale měli byste buď vložit znak escape (\
) před každou z nich nebo je uzavřete do uvozovek.
Chcete-li například najít všechny soubory končící na .pdf
, můžete spustit:
find /home -type f -name '*.pdf'
což je stejné jako:
find /home -type f -name \*.pdf
Podobně vyhledáte všechny soubory ve vašem systému Linux, jejichž názvy začínají report
, můžete spustit:
find /home -type f -name 'report*'
Najít soubory podle velikosti
Pomocí find
můžeme také snadno dosáhnout něčeho, co může vypadat komplikovaně:nalezení souborů větších nebo menších než je daná velikost .
-size
možnost find
nám umožňuje vyhledávat soubory určité velikosti. +
a -
předpony znamenají „větší než“ a „menší než“, jako obvykle.
Níže uvedený příklad vyhledá všechny soubory větší než 1 gigabajt. Všimněte si použití +
znak:
find /home -type f -size +1G
Ve výše uvedeném příkladu přípona G
značí gigabajty. Další oblíbené dostupné přípony jsou:
c
:bajtů.k
:kilobajty.M
:Megabajty.
Výše uvedené find
příkaz byl použit k vyhledání všech souborů větších než zadaná velikost. Dále find
příklad příkazu vyhledá všechny soubory o velikosti menší než 200 kilobajtů. Všimněte si použití -
znak:
find /home -type f -size -200k
Nyní vás pravděpodobně zajímá, jak najít soubory v Linuxu mezi určitou velikostí . Pomocí následujícího příkazu můžete například najít soubory o velikosti mezi 100 megabajty a 120 megabajty:
find /home -type f -size +100M -size -120M
Najít soubory pomocí časových razítek
Linux přiděluje konkrétní časová razítka každému souboru v systému souborů. find
příkaz může také vyhledávat soubory na základě jejich poslední úpravy , přístup nebo změna času.
-mtime
volba se používá k určení počtu dnů, kdy je soubor starý. Výraz lze použít dvěma způsoby:
-mtime +N
najde soubory upravené více nežN
před dny (pro více než).-mtime -N
najde soubory upravené méně nežN
před dny (za méně než).
Pokud například zadáte +3
, najde všechny soubory z /home
adresář starší než 3 dny.
find /home -type f -mtime +3
Podobně, pokud chceme najít všechny soubory, které se za posledních 24 hodin změnily:
find /home -type f -mtime -1
Stejným způsobem můžete použít -mmin N
výraz spoléhat na minuty místo na dny.
Tento příkaz například najde všechny soubory z /home
adresář upraven na poslední chvíli.
find /home -type f -mmin -1
Kromě toho můžeme dokonce skládat výrazy. Zde je návod, jak najít soubory v Linuxu, které byly změněny před méně než 60 minutami a před více než 30 minutami:
find /home -type f -mmin -60 -mmin +30
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 najít soubory vlastněné uživatelem john
v /home
složka serveru:
find /home -type f -user john
Najít všechny soubory patří do skupiny nazvané www-data
v /home
adresář:
find /home -type f -group www-data
Najít soubory podle oprávnění
-perm
umožňuje uživatelům vyhledávat soubory s konkrétní sadou oprávnění .
Níže uvedený příkaz vyhledá soubory s oprávněním přesně 644 v aktuálním adresáři.
find /home -type f -perm 644
Použití -
volba znamená „je nastavena alespoň tato úroveň oprávnění a jakákoli vyšší oprávnění.“
find /home -type f -perm -644
Tento příklad zobrazuje všechny zdroje v /home
adresář s alespoň 644
oprávnění. To znamená, že soubory s oprávněními jako 777
, 745
, 666
, 655
, 654
, atd., by odpovídaly, zatímco soubory s oprávněními 642
, 611
, 600
, 544
, atd., by se neshodovalo.
Najít adresáře podle názvu
Všechny příklady, které jsme dosud viděli, vracejí soubory. Pokud však potřebujete hledat pouze adresáře, můžete použít -type d
přepínač.
Jinými slovy, můžete zabránit find
příkaz v Linuxu z hledání jiných typů souborů kromě adresářů pomocí -type d
příznak (d
znamená adresář).
Chcete-li najít složku s názvem scripts
v /home
adresář, spusťte:
find /home -type d -name scripts
Podobně všechny ostatní dosud zobrazené možnosti jsou také použitelné při vyhledávání adresářů.
Další informace o find
příkaz v systému Linux, podívejte se na stránku jeho příručky.
Najít soubory a adresáře v Linuxu pomocí příkazu locate
Zatímco find
je bezpochyby jedním z nejpopulárnějších a zároveň nejvýkonnějších nástrojů příkazového řádku pro vyhledávání souborů v Linuxu, není dostatečně rychlý pro situace, kdy potřebujete okamžité výsledky.
locate
příkaz je rychlejší než find
protože používá dříve vytvořenou databázi, zatímco find
příkaz prohledává v reálném čase všechny aktuální adresáře a soubory.
Pokud find
není nainstalován, můžete jej snadno nainstalovat pomocí správce balíčků vaší distribuce Linuxu.
Na Ubuntu nebo jakémkoli jiném systému založeném na Debianu zadejte následující příkaz:
sudo apt install mlocate
Pokud používáte Fedora nebo CentOS, použijte místo toho tento příkaz:
sudo dnf install mlocate
Uživatelé Arch Linuxu musí provést:
sudo pacman -S mlocate
Před locate
lze použít, bude potřeba vytvořit databázi. To se provádí pomocí updatedb
příkaz, který (jak název napovídá) aktualizuje databázi.
sudo updatedb
Databáze bude aktualizována automaticky na denní bázi, ale můžete ji také kdykoli aktualizovat sami, abyste získali aktuální výsledky.
Najít soubory podle názvu
locate
příkaz se velmi snadno používá. Jediné, co musíte udělat, je předat mu název souboru, který chcete hledat.
locate report.pdf
Stejně jako find
příkaz locate
je nakonfigurován tak, aby zpracovával dotazy způsobem rozlišujícím malá a velká písmena. Chcete-li mít locate
příkaz ignorovat rozlišování malých a velkých písmen a zobrazit výsledky pro dotazy na velká i malá písmena, musíte použít -i
možnost.
locate -i rEpoRT.pdf
Najít soubory podle dílčího názvu
Pokud chcete vyhledat všechny názvy souborů, které mají řetězec .pdf
v nich, pak to můžete udělat pomocí locate
následujícím způsobem:
locate '*.pdf'
Omezit výsledky vyhledávání
Můžete omezit návratnost vyhledávání na požadovaný počet, abyste se vyhnuli nadbytečnosti výsledků vyhledávání pomocí -n
možnost.
Pokud například chcete pouze 10 výsledků ze svých dotazů, můžete zadat následující příkaz:
locate -n 10 '*.pdf'
Zobrazit počet odpovídajících záznamů
Chcete-li spočítat počet výskytů názvu souboru nebo vyhledávacího vzoru pomocí příkazu locate, vyvolejte -c
možnost, jak je znázorněno.
locate -c '*.pdf'
Získat informace o databázi lokalit
Chcete-li získat více informací o lokalizační databázi mlocate.db
které locate
katalogizoval, použijte -S
možnost:
locate -S
Database /var/lib/mlocate/mlocate.db:
72376 directories
1142596 files
98622214 bytes in file names
33950606 bytes used to store database
Pro případ, že byste potřebovali, zde je manuálová stránka pro locate
příkaz.
Závěr
Uživatelé Linuxu mají k dispozici dva nejpoužívanější nástroje pro vyhledávání souborů, které se nazývají find
a find
. Oba jsou dobré způsoby, jak najít soubory ve vašem systému. Je na vás, abyste se rozhodli, který z těchto nástrojů je v každé situaci vhodný.
Tento článek by vám měl poskytnout základní informace o tom, jak najít soubory ve vašich systémech Linux. I když byly možnosti prezentovány jednotlivě, měli byste mít na paměti, že je lze kombinovat, abyste mohli ještě více specifikovat soubory, které hledáte.