Příkaz find nám pomáhá najít konkrétní soubor v adresáři. Používá se k nalezení seznamu souborů pro různé podmínky, jako je oprávnění, vlastnictví uživatele, úprava, datum/čas, velikost a další.
V unixových a jiných operačních systémech je příkaz find nástroj příkazového řádku, který najde soubory na základě několika uživatelem specifikovaných formátů a buď vytiskne všechny odpovídající názvy objektů, nebo, pokud jsou požadovány jiné akce, implementuje tuto akci na všechny shodné objekty.
Spustí vyhledávání od požadovaného počátečního umístění a poté rekurzivně prochází adresáře (uzly) hierarchické struktury (obecně stromu). Příkaz find může vyhledávat a procházet z různých systémů oddílů souborů, které patří k jednomu nebo více úložným zařízením v počátečním adresáři.
Formát vyhledávání obsahuje vzor pro shodu s názvem souboru nebo časový rozsah pro shodu s časem modifikace nebo časem přístupu k souboru. Příkaz find poskytuje ve výchozím nastavení seznam všech souborů v aktuálním pracovním adresáři. Uživatelé však mohou omezit vyhledávání na požadovanou maximální úroveň v počátečním adresáři.
Přidružené vyhledávací programy použijí databázi indexovaných souborů získanou z příkazu fine, aby poskytly rychlejší techniku prohledávání celého systému souborů podle názvu.
Nástroj Najít je standardně dodáván s většinou Linuxové distribuce , takže nemusíme instalovat žádný další balíček. Je to jeden z nejdůležitějších a nejpoužívanějších příkazů Linux Systém.
find
Tyto dvě možnosti určují, jak má hledání zohledňovat symbolické odkazy. Výchozí povahou je nikdy neusilovat o symbolické odkazy. Vlajka, tj. -L , povede najít sledovat symbolické odkazy. Vlajka, tj. -H , bude pouze sledovat symbolické odkazy a přitom pokračovat s argumenty příkazového řádku. Příznaky jsou zmíněny ve standardu POSIX pro příkaz find. Základním rozšířením je příznak, tj. -P , abyste explicitně zakázali následující symbolický odkaz.
Alespoň cesta musí předvídat výraz. Příkaz find může interně interpretovat zástupné znaky a příkazy musí být pečlivě citovány, aby bylo možné spravovat globování shellu.
Komponenty výrazu jsou izolovány hranicí argumentů příkazového řádku, obecně označenou jako mezera v syntaxi shellu. Jsou uvažovány z levé strany na pravou stranu. Mohou zahrnovat logické komponenty jako OR a AND a také predikáty (akce a filtry). GNU find obsahuje několik dalších funkcí, které POSIX nezmiňuje.
K určení adresáře se používají následující symboly:
(.) : Název aktuálního adresáře
(/) : Pro kořenový adresář
Stručná historie příkazu Najít
Příkaz find se vyskytoval ve verzi 5 Unix jako prvek souboru Programátorský pracovní stůl projektu a byl specifikován Dicka Haighta s cpio, které byly vyvinuty pro společné použití.
Původně byla GNU implementace příkazu find specifikována pomocí Eric Decker . Později byl vyvinut společností David MacKenzie, Tim Wood , a Jay Plett . Příkaz find byl také přenesen do operačního systému IBM i.
rozdíl mezi ledem a sněhem
Predikáty
Široce používané primární jsou:
Najděte výchozí hodnoty pro implementaci -print v případě, že jsou podmínky splněny, pokud výraz nepoužívá žádnou z -ok, -exec, -print nebo -print0.
Operátoři
Operátoři vylepšují výrazy příkazu find. Jsou uvedeny v sestupném pořadí:
- výraz1 výraz2 (nebo výraz1 -a výraz2: AND. výraz 2 se nevyhodnocuje, pokud je výraz1 nepravdivý.
- výraz1 -o výraz2: NEBO. výraz expr2 se nevyhodnocuje, pokud je výraz expr1 pravdivý.
Příklady příkazu find
Podívejme se na následující příklady příkazu find:
- Vyhledejte soubory podle názvu
- Najděte soubory podle typu
- Najděte novější soubory
- Najděte a odstraňte soubor
- Najděte adresář
- Najděte soubory podle času úpravy
- Najít soubory podle oprávnění
- Najít a nahradit soubory
- Najděte text ve více souborech
Vyhledejte soubory podle názvu
Můžeme prohledávat všechny soubory končící příponou '.txt.' Chcete-li tak učinit, spusťte níže uvedený příkaz:
find . -name '*.txt'
Výše uvedený příkaz zobrazí seznam všech textových souborů z aktuálního pracovního adresáře. Zvažte následující výstup:
Z výše uvedeného výstupu jsou všechny soubory s příponou '.txt' uvedeny s příkazem find.
Hledání souborů podle typu
Parametr '-type' se používá k určení typu souboru.
Některé typy souborů jsou následující:
f-string python
- f: běžný soubor
- d: adresář
- l: symbolické odkazy
- c: znaková zařízení
- b: blokovat zařízení
Zvažte níže uvedený příkaz:
find . -type d -name '*.bak'
Výše uvedený příkaz zobrazí seznam všech adresářů s příponou '.bak'. Zvažte následující výstup:
Z výše uvedeného výstupu příkaz 'find . -type d -name '*.bak' zobrazí všechny adresáře končící na '.bak'.
Najděte novější soubory
Parametr '-newer' pomáhá při hledání souborů, které jsou novější než zmíněný soubor. Zvažte níže uvedený příkaz:
find . -newer msg.txt
Výše uvedený příkaz zobrazí všechny soubory, které jsou novější než 'msg.txt' z aktuálního pracovního adresáře. Zvažte následující výstup:
Z výše uvedeného výstupu jsou všechny zobrazené soubory novější než soubor 'msg.txt'.
Najděte a odstraňte soubor
Volba '-delete' se používá k odstranění konkrétního souboru. Při používání tohoto příkazu musíme být velmi opatrní, protože pokud je jednou proveden, neexistuje možnost vrátit zpět. Zvažte níže uvedený příkaz:
find . -name Demo.txt -delete
Výše uvedený příkaz odstraní soubor 'Demo.txt' z aktuálního pracovního adresáře. Zvažte následující výstup:
Najděte adresář
Volba 'type -d' se používá k nalezení adresáře. Zvažte níže uvedený příkaz:
find . type -depth -name Newdirectory
Výše uvedený příkaz najde umístění 'Newdirectory'. Zvažte následující výstup:
Najděte soubory podle času úpravy
Volba '-mtime' následovaná počtem dní se používá k nalezení souborů modifikací. Počet dní může být kladný nebo záporný. Záporná hodnota bude použita pro méně než jako -1 se používá pro poslední den a podobně +1 najde soubor pro více než jeden den. Zvažte níže uvedený příkaz:
find ./Newdirectory -mtime -1
Výše uvedený příkaz najde soubory, které byly změněny během posledního dne. Zvažte následující výstup:
Najít soubory podle oprávnění
Volba '-perm' se používá k vyhledání souborů podle oprávnění. Spusťte příkaz find s volbou '-perm' a předejte požadovanou hodnotu. Zvažte níže uvedený příkaz:
velikosti latexového písma
find ./ -perm 777
Výše uvedený příkaz zobrazí seznam souborů ze zadaného adresáře, které může každý číst, zapisovat a spouštět.
Najít a nahradit soubory
Abychom našli a nahradili soubory, musíme zkombinovat příkaz find s příkazem sed. Chcete-li pracovat se soubory, použijte volbu '-exec' s příkazem find. Zvažte níže uvedený příkaz:
find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ;
z výše uvedeného příkazu bude zadaný výskyt nahrazen. Zvažte následující výstup:
Najděte text ve více souborech
Můžeme vytvořit další kombinaci příkazu find s příkazem grep, abychom našli text z různých souborů. Zvažte níže uvedený příkaz:
find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ;
Výše uvedený příkaz najde řádky obsahující text 'demo' ze všech textových souborů v adresáři 'Newdirectory'. Zvažte následující výstup:
Z výše uvedeného výstupu vidíme, že se zobrazily řádky s textem 'demo'.
Prohledejte každý adresář
$ find / -name file1 -type f -print
Výše uvedený příkaz najde všechny adresáře pro běžný soubor, jehož název je soubor1 a vytiskne jej na obrazovku. Obecně není dobrý nápad vyhledávat soubory tímto způsobem. Může to trvat hodně času. Nejlepší je tedy zmínit adresář. Několik operačních systémů může připojit souborové systémy (dynamické), které nejsou vhodné pro příkaz find. Složitější názvy souborů obsahující znaky jedinečné pro shell mohou vyžadovat uzavření v jednoduchých uvozovkách.