logo

Najděte příkaz v Linuxu/Unixu s příklady

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:

    - vzor jména:Zkontroluje, zda je název souboru stejný jako daný vzor shell-glob nebo ne.- typ typu:Zkontroluje, zda je soubor zadaného typu.-tisk:Vždy dává skutečnou hodnotu. Vytiskne aktuální název souboru a nový řádek na stdout.-tisk0:Vždy dává skutečnou hodnotu. Vytiskne název aktuálního souboru a znak null do stdout. Nepotřebuje POSIX.-exec program [argument ...];:Vždy dává skutečnou hodnotu. Spustí program s pevně danými argumenty a aktuální cestou k souboru.-exec program [argument ...] { } +:Vždy dává skutečnou hodnotu. Spustí program s pevně danými argumenty a co největším počtem cest. Pro téměř každou implementaci znamenají jiné výskyty {} další kopie daného jména (aspekt není potřeba pro POSIX).-ok program [argument ...];:Je to stejné jako -exec, ale vrátí false nebo true, pokud program dá 0.

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í:

    (expr):Tento operátor může vynutit prioritu.! expr:Pokud expr vrátí hodnotu false, vrátí hodnotu true.
  • 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

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:

Linux Najít

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:

Linux Najít

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:

Linux Najít

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:

Linux Najít

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:

Linux Najít

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:

Linux Najít

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:

Linux Najít

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:

Linux Najít

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.