Příkaz find je výkonný vyhledávací nástroj používaný k vyhledání souborů v operačních systémech Linux a Unix. Dokáže najít soubory a adresáře na základě různých kritérií, jako je název, přípona, typ, datum úpravy a vytvoření, oprávnění, velikost, vlastník.
Find může také provést akci založenou na příkazu, například vyhledat soubory a provést delete, count atd.
Tento tutoriál se zaměří na vysvětlení způsobu použití příkazu find a provede vás příklady.
Syntaxe:
Základní syntaxe najít použití příkazu je následující:
find <directory-to-search> [OPTIONS] <find name,file,extension>
-H
a -L
volby se používají ke správě symbolických odkazů při vyhledávání, -P (nesledovat symbolické odkazy) a -L (sledovat symbolické odkazy).
1. Najděte soubor podle názvu
Chcete-li najít soubor podle jeho jména , použijte příkaz find s -name
možnost.
Za předpokladu, že chcete vyhledat soubor s názvem 'nginx.yaml' v adresáři Documents, můžete spustit následující příkaz:
$ find /Documents -name nginx.yaml
To najde soubor s názvem "nginx.yaml" v Documents/ a všech podadresářích:
Navíc, chcete-li vyhledat soubor "nginx.yaml" v aktuálním adresáři a všech jeho podadresářích, spusťte:
$ find -name nginx.yaml
Tečka (.) za příkazem find znamená, že se má začít hledat v aktuálním adresáři:
$ find . -name nginx.yaml
2. Najít soubory podle přípony
Pokud chcete hledat všechny soubory podle přípony , můžete použít příkaz find s -name
možnost následující s *.
Můžete například vyhledat všechny soubory s příponou '.png' v domovském adresáři spuštěním následujícího příkazu:
$ find $HOME -name *.png
3. Najít pouze adresáře
Pokud chcete hledat pouze adresáře , můžete spustit příkaz find pomocí -type d
možnost.
Předpokládejme, že chcete vyhledat všechny adresáře ve složce Dokumenty/, spusťte:
$ find /Documents -type d
4. Najít pouze soubory
V Linuxu existuje mnoho různých typů souborů, jako jsou:adresáře, symbolické odkazy, socket, běžné soubory atd. Pokud chcete hledat pouze běžné soubory , můžete spustit příkaz find s volbou '-type f'.
Například za předpokladu, že v aktuálním adresáři najdete pouze soubory, spusťte:
$ find . -type f
5. Najít a odstranit
V některých situacích chcete najít a smazat soubory/adresáře, které již nepotřebujete, můžete spustit příkaz find s volbou '-delete'.
Například nalezení všech obrázků s příponou *.png ve složce Dokumenty/ a jejich odstranění:
$ find /Documents -name *.png -delete
6. Najděte soubory se specifickými oprávněními
Pokud chcete vyhledat všechny soubory, které mají specifická oprávnění , můžete použít linuxový příkaz find s volbou '-perm'.
Chcete-li například najít soubory, které mají oprávnění '755', spusťte:
$ find . -type f -perm 775 -exec ls -l {} \;
7. Vyhledejte soubory a adresáře podle data/času
Linuxový příkaz find vám umožňuje vyhledávat soubory a adresáře podle data/časového razítka.
Můžete použít příkaz find s volbou '-mtime -N' k nalezení souborů, které byly naposledy upraveny před 'N' dny. Chcete-li například vyhledat všechny soubory, které byly změněny za poslední 2 dny v aktuálním adresáři, spusťte:
$ find . -type f -mtime -2 -exec ls -l {} \;
Dalším způsobem, jak použít příkaz find k vyhledání souborů/adresářů podle data/času, je použití volby '-newerXY'. Kde X a Y mohou být:
a
- čas přístupu k referenčnímu souboru
B
- čas narození referenčního souboru
c
- čas změny stavu inodu referenčního souboru
m
- čas úpravy referenčního souboru
t
- odkaz se interpretuje přímo jako čas
Chcete-li například vyhledat všechny soubory upravené 4. července 2020 v aktuálním adresáři, spusťte:
$ find . -type f -newermt 2020-07-04 -ls
8. Vyhledejte soubory a adresáře podle velikosti
Linuxový příkaz find vám umožňuje vyhledávat soubory/adresáře podle velikosti spuštěním příkazu s volbou '-size'.
Za předpokladu, že chcete najít soubory, které jsou větší než 1 GB, můžete spustit následující příkaz:
$ find . -type f -size +1G
Praktické příklady
01) Najděte prázdné soubory/adresáře
Tento výstup zobrazí seznam všech prázdných souborů a složek v aktuálním adresáři a podadresářích:
$ find . -empty -ls
02) Najít všechny soubory .jpg
$ find . -name *.jpg
03) Najít všechny adresáře s oprávněním 644
Výstup zobrazuje všechny složky v aktuálním adresáři nebo podadresáři, které mají oprávnění 644:
$ find . -type d -perm 644 -ls
04) Najděte soubory vlastněné konkrétním uživatelem
Pokud chcete zkontrolovat všechny soubory vlastněné uživatelem "cas" v aktuálním adresáři, můžete to udělat následovně:
$ find . -user cas -ls
05) Najít soubory podle čísla inodu
Chcete-li vyhledat soubor podle jeho čísla inodu, můžete použít find s -inum
volba. Například:
$ find -inum 534937
06) Spočítat počet souborů
$ find -type f -exec basename {} \; | wc -l
07) Spočítat počet adresářů
$ find -type d -exec basename {} \; | wc -l
08) Vyhledávání souborů s určitou hloubkou
Za předpokladu, že chcete hledat soubor "Dockerfile" ve složce HOME a jejích podadresářích a ne v podadresářích další úrovně, musíte nastavit volbu '-maxdepth' na 2 následovně:
$ find $HOME -maxdepth 2 -name Dockerfile
Závěr
Dalším mocným nástrojem je příkaz fd, který je alternativou příkazu find.
V tomto tutoriálu jsme se naučili, jak používat Linux příkaz find k hledání souborů a adresářů. Děkujeme za přečtení a zanechte prosím svůj návrh v sekci komentářů níže.