Najít název souboru. Příkaz find a jeho možnosti jsou uvedeny v příkladech. Příklady použití find

Toto je výchozí uvítací stránka používaná k testování správného fungování serveru Apache2 po instalaci na systémy Ubuntu. Vychází z ekvivalentní stránky na Debianu, ze které je odvozen obal Ubuntu Apache. Pokud si můžete přečíst tuto stránku, znamená to, že HTTP server Apache nainstalovaný na této stránce funguje správně. Měl by jsi nahradit tento soubor(nachází se na adrese /var/www/html/index.html), než budete pokračovat v provozu serveru HTTP.

Pokud jste běžným uživatelem této webové stránky a nevíte, o čem tato stránka je, pravděpodobně to znamená, že stránka je momentálně nedostupná z důvodu údržby. Pokud problém přetrvává, kontaktujte prosím administrátora stránek.

Přehled konfigurace

Výchozí konfigurace Apache2 Ubuntu se liší od výchozí konfigurace upstream a je rozdělena do několika souborů optimalizovaných pro interakci s nástroji Ubuntu. Konfigurační systém je plně zdokumentováno v /usr/share/doc/apache2/README.Debian.gz. Zde naleznete úplnou dokumentaci. Dokumentace pro webový server Pokud byl na tomto serveru nainstalován balíček apache2-doc, lze jej nalézt v příručce.

Uspořádání konfigurace pro instalaci webového serveru Apache2 na systémech Ubuntu je následující:

/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-enabled | |-- *.načíst | `-- *.conf |-- conf-enabled | `-- *.conf |-- sites-enabled | `-- *.conf

  • apache2.conf je hlavní konfigurační soubor. Dává dohromady všechny zbývající konfigurační soubory při spouštění webového serveru.
  • ports.conf je vždy součástí hlavního konfiguračního souboru. Používá se k určení naslouchacích portů pro příchozí připojení a tento soubor lze kdykoli upravit.
  • Konfigurační soubory v adresářích mods-enabled/ , conf-enabled/ a sites-enabled/ obsahují konkrétní fragmenty konfigurace, které spravují moduly, fragmenty globální konfigurace nebo konfigurace virtuálních hostitelů.
  • Aktivují se symbolickým propojením dostupných konfiguračních souborů z jejich příslušných *-available/ protějšků. Ty by měly být spravovány pomocí našich pomocníků a2enmod, a2dismod, a2ensite, a2dissite a a2enconf, a2disconf . Podrobné informace naleznete v příslušných manuálových stránkách.
  • Binární soubor se nazývá apache2. Kvůli použití proměnných prostředí je ve výchozí konfiguraci apache2 potřeba spustit/zastavit pomocí /etc/init.d/apache2 nebo apache2ctl . Přímé volání /usr/bin/apache2 nebude fungovat s výchozí konfigurací.

Kořeny dokumentu

Ve výchozím nastavení Ubuntu neumožňuje přístup prostřednictvím webového prohlížeče žádný kromě těch, které se nacházejí v /var/www , adresářích public_html (pokud je povoleno) a /usr/share (pro webové aplikace). Pokud váš web používá kořenový webový dokument umístěný jinde (například v /srv), možná budete muset přidat kořenový adresář vašeho dokumentu na bílou listinu v /etc/apache2/apache2.conf .

Výchozí kořen dokumentu Ubuntu je /var/www/html . Můžete si vytvořit své vlastní virtuální hostitele pod /var/www. To se liší od předchozích verzí, které poskytují lepší zabezpečení hned po vybalení.

Hlášení problémů

K nahlášení chyb v balíčku Apache2 s Ubuntu použijte nástroj ubuntu-bug. Před nahlášením nové chyby však zkontrolujte.

Chyby specifické pro moduly (jako je PHP a další) prosím nahlašte příslušným balíčkům, nikoli samotnému webovému serveru.

Při práci na jakémkoli operačním systému je někdy potřeba použít nástroje rychlé hledání ten či onen soubor. To je také relevantní pro Linux, takže vše bude probráno níže možné způsoby hledat soubory v tomto OS. Budou prezentovány jako nástroje správce souborů a příkazy používané v "Terminál".

Pokud potřebujete zadat mnoho parametrů vyhledávání, abyste našli soubor, který potřebujete, pak příkaz nalézt nenahraditelný. Před zvážením všech jeho variant se vyplatí projít syntaxi a možnosti. Má následující syntaxi:

možnost najít cestu

Kde cesta- toto je adresář, ve kterém bude vyhledávání probíhat. Existují tři hlavní možnosti pro určení cesty:

  • / — hledat v kořenovém a sousedním adresáři;
  • ~ — vyhledávání podle domovského adresáře;
  • ./ — vyhledávání v adresáři, ve kterém se uživatel aktuálně nachází.

Můžete také zadat cestu přímo k samotnému adresáři, kde se soubor údajně nachází.

Možnosti nalézt existuje mnoho a právě díky nim můžete provádět flexibilní nastavení vyhledávání nastavením potřebných proměnných:

  • -název- proveďte vyhledávání pomocí názvu prvku, který hledáte jako základ;
  • -uživatel- vyhledávat soubory, které se týkají konkrétního uživatele;
  • -skupina- vyhledat konkrétní skupinu uživatelů;
  • -trvalá- zobrazit soubory se zadaným režimem přístupu;
  • - velikost n- vyhledávání na základě velikosti objektu;
  • -mtime +n -n- hledat soubory, které se změnily více než ( +n) nebo méně ( -n) před pár dny;
  • -typ- vyhledávat soubory určitého typu.

Existuje také mnoho typů prvků, které hledáte. Zde je jejich seznam:

  • b- blok;
  • F- obyčejný;
  • p- pojmenovaná dýmka;
  • d- katalog;
  • l- odkaz;
  • s- zásuvka;
  • C- symbolický.

Po podrobné analýze syntaxe příkazu a možností nalézt Můžete přejít přímo k názorným příkladům. Vzhledem k velkému množství možností použití příkazu nebudou příklady uvedeny pro všechny proměnné, ale pouze pro ty nejpoužívanější.

Metoda 1: Vyhledávání podle jména (volba -name)

Nejčastěji uživatelé využívají možnost prohledat systém -název, takže tím začneme. Podívejme se na pár příkladů.

Hledat podle přípony

Řekněme, že potřebujete v systému najít soubor s příponou ".xlsx", který se nachází v adresáři "Dropbox". Chcete-li to provést, musíte použít následující příkaz:

najít /home/user/Dropbox -name "*.xlsx" -print

Z jeho syntaxe můžeme říci, že vyhledávání probíhá v adresáři "Dropbox" ("/home/user/Dropbox") a požadovaný objekt musí mít příponu ".xlsx". Hvězdička znamená, že vyhledávání bude provedeno u všech souborů této přípony, aniž by se bral v úvahu jejich název. "-tisk" označuje, že se zobrazí výsledky hledání.

Vyhledávání podle názvu souboru

Chcete například hledat v adresáři "/Domov" soubor s názvem "hrudky", ale jeho rozšíření není známo. V tomto případě je třeba provést následující:

find ~ -name "lumpics*" -print

Jak vidíte, zde použitý symbol je «~» , což znamená, že vyhledávání bude probíhat v domovském adresáři. Po možnosti "-název" je uveden název hledaného souboru ( "hrudky*"). Hvězdička na konci znamená, že vyhledávání bude probíhat pouze podle jména, bez zohlednění přípony.

Hledejte podle prvního písmene jména

Pokud si pamatujete pouze první písmeno názvu souboru, existuje speciální syntaxe příkazu, která vám jej pomůže najít. Chcete například najít soubor, který začíná písmenem od "G" před "l" a nevíte, v jakém adresáři je. Poté musíte spustit následující příkaz:

find / -name "*" -print

Soudě podle symbolu „/“, který je bezprostředně za hlavním příkazem, bude vyhledávání prováděno počínaje kořenovým adresářem, tedy v celém systému. Další, část «*» znamená, že hledané slovo bude začínat určitým písmenem. V našem případě od "G" před "l".

Mimochodem, pokud znáte příponu souboru, pak za symbolem «*» můžete to specifikovat. Například potřebujete najít stejný soubor, ale víte, že má příponu ".odt". Pak můžete použít tento příkaz:

find / -name "*.odt" -print

Metoda 2: Vyhledávání podle režimu přístupu (možnost -perm)

Někdy potřebujete najít objekt, jehož jméno neznáte, ale víte, jaký má režim přístupu. Pak musíte použít možnost "-perm".

Použití je poměrně jednoduché, stačí zadat místo vyhledávání a režim přístupu. Zde je příklad takového příkazu:

najít ~ -perm 775 -tisk

To znamená, že vyhledávání se provádí v domovské sekci a hledané objekty budou mít přístup 775 . Před toto číslo můžete také napsat symbol „-“, nalezené objekty pak budou mít bity oprávnění od nuly do zadané hodnoty.

Metoda 3: Vyhledávání podle uživatele nebo skupiny (možnosti -user a -skupina)

Každý operační systém má uživatele a skupiny. Pokud chcete najít objekt patřící do jedné z těchto kategorií, můžete použít možnost "-uživatel" nebo "-skupina", resp.

Najděte soubor podle jeho uživatelského jména

Musíte například najít v adresáři "Dropbox" soubor "lampy", ale nevíte, jak se to jmenuje, víte jen, že to patří uživateli "uživatel". Poté musíte spustit následující příkaz:

najít /home/user/Dropbox -user user -print

V tomto příkazu jste zadali požadovaný adresář ( /home/user/Dropbox), naznačil, že musíte vyhledat soubor patřící uživateli ( -uživatel) a uvedl, kterému uživateli tento soubor patří ( uživatel).

Hledání souboru podle názvu skupiny

Vyhledávání souboru, který patří do konkrétní skupiny, je stejně snadné – stačí volbu nahradit "-uživatel" na možnost "-skupina" a uveďte název této skupiny:

najít / -groupe guest -print

To znamená, že jste uvedli, že chcete v systému najít soubor, který patří do skupiny "host". Vyhledávání bude probíhat v celém systému, což je označeno symbolem «/» .

Metoda 4: Vyhledejte soubor podle jeho typu (volba -type)

Nalezení prvku určitého typu v Linuxu je poměrně jednoduché, stačí zadat příslušnou volbu ( -typ) a označte typ. Na začátku článku byla uvedena všechna typová označení, která lze pro vyhledávání použít.

Chcete například najít všechny blokové soubory ve svém domovském adresáři. V tomto případě bude váš příkaz vypadat takto:

najít ~ -typ b -tisk

V souladu s tím jste uvedli, že vyhledáváte podle typu souboru, což dokazuje možnost "-typ" a poté určil jeho typ vložením symbolu souboru bloku - "b".

Stejně tak můžete zadáním symbolu do příkazu zobrazit všechny adresáře v požadovaném adresáři "d":

najít /home/user -type d -print

Metoda 5: Vyhledejte soubor podle velikosti (možnost -velikost)

Pokud vše, co o souboru víte, je jeho velikost, pak i to může stačit k jeho nalezení. Chcete-li například v určitém adresáři najít soubor o velikosti 120 MB, proveďte následující:

najít /home/user/Dropbox -velikost 120M -tisk

Jak vidíte, soubor, který potřebujeme, byl nalezen. Pokud však nevíte, v jakém adresáři se nachází, můžete prohledat celý systém zadáním kořenového adresáře na začátku příkazu:

najít / -velikost 120M -tisk

Pokud znáte přibližnou velikost souboru, pak pro tento případ existuje speciální příkaz. Musíte se zaregistrovat "Terminál" totéž, jen před uvedením velikosti souboru vložte znak «-» (pokud potřebujete najít soubory menší než zadaná velikost) popř «+» (pokud je velikost hledaného souboru větší než zadaná velikost). Zde je příklad takového příkazu:

najít /home/user/Dropbox +100M -tisk

Metoda 6: Najděte soubor podle data změny (volba -mtime)

Jsou chvíle, kdy je nejpohodlnější hledat soubor podle data, kdy byl upraven. V Linuxu se to provádí pomocí volby "-mtime". Použití je docela jednoduché, podívejme se na vše na příkladu.

Řekněme ve složce "Snímky" potřebujeme najít objekty, které prošly změnami za posledních 15 dní. Zde je to, co musíte napsat "Terminál":

najít /home/user/Images -mtime -15 -print

Jak vidíte, tato volba zobrazuje nejen soubory, které se během zadaného období změnily, ale také složky. Funguje to i v opačném směru – můžete najít objekty, které byly změněny po zadaném datu. Chcete-li to provést, musíte před digitální hodnotu zadat znaménko «+» :

najít /home/user/Images -mtime +10 -print

GUI

Grafické rozhraní výrazně usnadňuje život začátečníkům, kteří právě nainstalovali Linux distribuce. Tato metoda vyhledávání je velmi podobné tomu ve Windows, i když nemůže poskytnout všechny výhody, které nabízí "Terminál". Ale nejdřív. Pojďme se tedy podívat, jak hledat soubory v Linuxu pomocí grafického rozhraní systému.

Metoda 1: Prohledejte systémovou nabídku

Nyní se podíváme na to, jak vyhledávat soubory prostřednictvím nabídky Linuxové systémy. Provedené akce budou provedeny v distribuci Ubuntu 16.04 LTS, ale pokyny jsou společné pro všechny.

Tento článek je výňatek z knihy " Linux&Unix - programování v Shell", David Tansley.

Úpravy jsem provedl trochu ve spěchu, pokud si všimnete nějakých překlepů, napište do komentářů.

Během práce je často potřeba hledat soubory s určitými vlastnostmi, jako jsou přístupová práva, velikost, typ atd. Příkaz find je univerzální vyhledávací nástroj: umožňuje vyhledávat soubory a adresáře, prohlížet všechny adresáře v systému nebo pouze aktuální adresář.

Tato kapitola pokrývá následující témata související s používáním příkazu find:

najít možnosti příkazů;

Příklady použití různých možností příkazu find;

Příklady společného použití xargs a příkazů find.

Možnosti příkazu find jsou rozsáhlé a seznam nabízených možností je velký. Tato kapitola popisuje nejdůležitější z nich. Příkaz find může dokonce prohledávat disky NFS (Síťový souborový systém- síťový souborový systém), samozřejmě pokud máte příslušná oprávnění. V podobné případy příkaz se obvykle provádí v Pozadí, protože procházení adresářového stromu je časově náročné. Obecný formát příkazu find je:

nalézt název_cesty -volby

Kde název_cesty- toto je adresář, ze kterého se spustí vyhledávání. Znak '.' se používá k označení aktuálního adresáře, znak / je kořenový adresář a znak "~" je ten, který je uložen v proměnné. $HOME počáteční adresář současný uživatel.

2.1. najít možnosti příkazů

Zastavme se u popisu hlavních možností příkazu find.

Název Vyhledávání souborů, jejichž názvy odpovídají danému vzoru

Tisk Zapíše úplné názvy nalezených souborů na standardní výstup

Trvalá Hledání souborů, pro které je nastaven zadaný režim přístupu

Prune Používá se k zabránění příkazu find v provádění rekurzivního hledání na cestě, která již byla nalezena; pokud je zadána volba -depth, volba -prune je ignorována

Uživatel Hledat soubory vlastněné zadaným uživatelem

Skupina Vyhledávání souborů, které patří do dané skupiny

Mtime -n + n Hledat soubory, jejichž obsah byl upraven méně než (-) nebo více než (+) n před pár dny; K dispozici jsou také volby -atime a -ctime, které umožňují vyhledávat soubory podle data posledního čtení a data poslední změny atributů souboru

Nogroup Hledání souborů patřících do neexistující skupiny, pro kterou, jinými slovy, není v souboru žádný záznam /etc/groups

Nouser Najde soubory vlastněné neexistujícím uživatelem, pro které, jinými slovy, v souboru není žádný záznam /etc/passwd

Novější soubor Vyhledejte soubory, které byly vytvořeny později než zadaný soubor

Typ Vyhledávání souborů určitého typu, konkrétně: b- speciální blokový soubor; d- katalog; S- soubor speciálních symbolů; p- pojmenovaná dýmka; l- symbolický odkaz; s- zásuvka; F- běžný soubor

Velikost n Vyhledejte soubory, jejichž velikost je n Jednotky; Jsou možné následující jednotky měření: b- velikost bloku 512 bajtů (výchozí nastavení); S- byte; k- kilobajt (1024 bajtů); w- dvoubajtové slovo

Hloubka Při vyhledávání souborů se nejprve podívá na obsah aktuálního adresáře a teprve poté se kontroluje záznam odpovídající adresáři samotnému

F typ Vyhledává soubory, které jsou v souborovém systému určitého typu; Obvykle jsou příslušné informace uloženy v souboru /etc/fstab, který obsahuje údaje o souborových systémech používaných na místním počítači

Připojit Vyhledá soubory pouze v aktuálním systému souborů; Ekvivalentem této volby je volba -xdev -exec Provést příkaz interpreta skořápka pro všechny zjištěné soubory; spouštěné příkazy mají příkaz format ( );

(všimněte si mezery mezi znaky () a 😉

Ok Podobné jako -exec, ale před provedením příkazu zobrazí výzvu

2.1.1. Volba -název

Při práci s příkazem find se nejčastěji používá volba -name. Za ním musí následovat vzor názvu souboru v uvozovkách.
Pokud potřebujete najít všechny soubory s příponou . txt ve svém domovském adresáři zadejte symbol jako název cesty. Název počátečního adresáře bude extrahován z proměnné $HOME.

$ find ~ -name "*.txt" -print

Chcete-li najít všechny soubory s příponou .txt umístěný v aktuálním adresáři, použijte následující příkaz:

$najít. -name "*.txt" -print

Chcete-li najít všechny soubory v aktuálním adresáři, které mají v názvu alespoň jedno velké písmeno, zadejte následující příkaz:

$najít. -jméno "*" -tisk

Najděte v katalogu /atd soubory, jejichž názvy začínají znaky " hostitel“, příkaz umožňuje

$ find /etc -name "hoat*" -print

Vyhledejte v počátečním adresáři všechny soubory s příponou .txt stejně jako soubory, jejichž názvy začínají tečkou, příkaz vytvoří

$ find ~ -name "*.txt" -print -o -name ".*" -print

Volba je označení pro logickou operaci OR. Pokud je použit, budou kromě souborů s běžnými názvy nalezeny soubory, jejichž názvy začínají tečkou.

Pokud chcete vypsat všechny soubory v systému, které nemají příponu, spusťte níže uvedený příkaz, ale buďte opatrní, protože to může výrazně zpomalit systém:

$ find / -name "*" -print

Následující text ukazuje, jak najít všechny soubory, jejichž názvy začínají malými písmeny, za kterými následují dvě čísla a přípona .txt(Například, akh37.xt):

$najít. -jméno » [a-x] [a-x] . txt" - tisk

2.1.2. Volba -trvalá

Volba -perm vám umožňuje najít soubory se zadaným režimem přístupu. Například pro vyhledávání souborů v režimu přístupu 755 (může je prohlížet a spouštět každý uživatel, ale právo zapisovat má pouze vlastník), měli byste použít následující příkaz:

$najít. -trvalá 755 -tisk

Pokud před hodnotu režimu vložíte pomlčku, vyhledá se soubory, pro které jsou nastaveny všechny zadané bity oprávnění, a zbývající bity budou ignorovány. Například následující příkaz vyhledává soubory, ke kterým mají ostatní uživatelé úplný přístup:

$najít. -trvalá -007 -tisk

Pokud je před hodnotou režimu zadáno znaménko plus, jsou prohledávány soubory, pro které je nastaven alespoň jeden ze zadaných bitů oprávnění, a zbývající bity jsou ignorovány.

2.1.3. Možnost - prořezávat

Pokud nechcete prohledávat konkrétní adresář, použijte volbu -prune. To vám dá pokyn, abyste přestali hledat na aktuální cestě. Pokud cesta ukazuje na adresář, příkaz find do něj nepřejde. Pokud je přítomna volba -depth, volba -prune je ignorována.

Následující příkaz prohledá aktuální adresář, aniž by přešel do podadresáře /zásobník:

$najít. -jméno "bin" -prune -o -print

2.1.4. Možnosti -user a --nouser

Chcete-li najít soubory vlastněné konkrétním uživatelem, zadejte v příkazu find volbu -user a poté uživatelské jméno. Například hledání souborů ve vlastnictví uživatele v počátečním adresáři dave, se provádí pomocí následujícího příkazu:

$ find ~ -user dave -print

Prohledejte katalog /atd soubory ve vlastnictví uživatele uucp, provede následující příkaz:

$ najít /etc -uaer uucp -print

Díky volbě -nouser je možné vyhledávat soubory patřící neexistujícím uživatelům. Při jeho použití se vyhledávají soubory, jejichž majitelé nemají v souboru záznam /etc/passwd. Není třeba zadávat konkrétní uživatelské jméno, příkaz find provede veškerou potřebnou práci sám. Chcete-li najít všechny soubory, které jsou ve vlastnictví neexistujících uživatelů a jsou umístěny v adresáři /Domov, zadejte tento příkaz:

$ find /home -nouaer -print

2.1.5. Možnosti -group a -nogroup

Volby -group a -nogroup jsou podobné jako -user-nouser/apps všech souborů vlastněných uživateli ve skupině akty:

$ najít /arra -group accta -print

Následující příkaz hledá v celém systému soubory patřící do neexistujících skupin:

$ find / -nogroup -print

2.1.6. Možnost -mtime

Volba -mtime by měla být použita při hledání souborů, ke kterým bylo přistupováno X před pár dny. Pokud je argument volby dodán se znaménkem '-', budou vybrány soubory, ke kterým se nějakou dobu nepřistupovalo. X dní. Argument se znaménkem „+“ vede k opačnému výsledku – jsou vybrány soubory, které byly zpřístupněny během posledního X dní.

Následující příkaz vám umožní najít všechny soubory, které nebyly aktualizovány za posledních pět dní:

$ najít / -mtime -5 -tisk

Níže je uveden příkaz, který prohledává adresář /var/adm soubory, které byly aktualizovány za poslední tři dny:

$ find /var/adm -mtime +3 -print

2.1.7. - novější varianta

Pokud potřebujete najít soubory, ke kterým se přistupovalo v době mezi aktualizacemi dvou zadaných souborů, použijte volbu -newer. Obecný formát pro jeho aplikaci je následující:

Novější starý_soubor! -novější nový soubor

Podepsat ' ! ‘ je logický operátor negace. To znamená: najít soubory, které jsou novější než starý_soubor, ale starší než nový soubor.

Řekněme, že máme dva soubory, které byly aktualizovány s odstupem něco málo přes dva dny:

Rwxr-xr-x 1 kořenový kořen 92. dubna 18 11:18 age.awk
-rwxrwxr-x 1 kořen kořen 1054 20. dubna 19:37 pásy.awk

Chcete-li najít všechny soubory, které byly aktualizovány později než věk.awk, ale dříve než pásy.awk, spusťte následující příkaz (použití volby -exec je popsáno níže):

$najít. -New Age.awk! -novější pásy.awk -exec Is -1 () ;
-rwxrwxr-x 1 kořenový kořen 62. dubna 18 11:32 ./who.awk
-rwxrwxr-x 1 kořenový kořen 49. dubna 18 12:05 ./group.awk
-rw-r-r- 1 root root 201 20. dubna 19:30 ./grade2.txt
-rwxrwxr-x 1 kořenový kořen 1054 20. dubna 19:37 ./belts.awk

Co když ale potřebujete najít soubory vytvořené řekněme za poslední dvě hodiny, ale nemáte soubor vytvořený přesně před dvěma hodinami, se kterým byste to mohli porovnat? Vytvořte takový soubor! K tomuto účelu je určen příkaz touch -t, který vytvoří soubor s daným časovým razítkem ve formátu MMDChhmm (měsíc-den-hodiny-minuty). Například:

$ touch -t 05042140 razítko
$ls -1 razítko
-rw-r-r- 1 dave admin 0 4. května 21:40 dstamp

Výsledkem bude soubor, jehož datum vytvoření je 4. května, čas vytvoření -21:40 (za předpokladu, že aktuální čas- 23:40). Nyní můžete použít příkaz find s volbou -newer k nalezení všech souborů, které byly aktualizovány během posledních dvou hodin:

$najít. -nový datamp -tisk

2.1.8. Volba -typ

OS UNIX A Linux Podpěra, podpora Různé typy soubory. Hledat soubory správný typ provedete pomocí příkazu, najděte pomocí volby -type. Chcete-li například najít všechny podadresáře v adresáři /atd použijte tento příkaz:

$ najít /etc -type d -print

Chcete-li zobrazit všechny soubory, ale ne adresáře, spusťte následující příkaz:

$najít. ! -typ d -tisk

Níže je uveden příkaz, který je určen k vyhledání všech symbolických odkazů v adresáři /atd.

$ najít /etc -type 1 -print

2.1.9. Volba -velikost

Během procesu vyhledávání se velikost souboru určuje pomocí volby -size N, Kde N- velikost souboru v blocích 512 bajtů. Možné argumenty mají následující význam: +N- hledat soubory, jejichž velikost je větší než zadaná, -N- méně, než je uvedeno, N- roven danému. Pokud argument navíc specifikuje symbol S, pak se velikost považuje za specifikovanou v bajtech, nikoli v blocích, a pokud je znak k- v kilobajtech. Chcete-li vyhledat soubory, jejichž velikost přesahuje 1 MB, použijte příkaz

$najít. -aize -flOOOk -tisk

Následující příkaz prohledá adresář /home/apache soubory, jejichž velikost je přesně 100 bajtů:

$ najít /home/apache -sixe 100s -print

Následující příkaz umožňuje vyhledávat soubory větší než 10 bloků (5120 bajtů):

$najít. -velikost +10 -potisk

2.1.10. Možnost Možnost -hloubka

Volba -depth umožňuje organizovat vyhledávání tak, že se nejprve zkontrolují všechny soubory aktuálního adresáře (a rekurzivně všechny jeho podadresáře) a až na konci - vstup do samotného adresáře. Tato možnost je široce používána při vytváření seznamu souborů k archivaci na pásku pomocí příkazu cpio nebo tar, protože v tomto případě se obraz adresáře nejprve zapíše na pásku a teprve poté se nastaví přístupová práva k němu. To umožňuje uživateli archivovat ty adresáře, pro které nemá oprávnění k zápisu.
Následující příkaz vypíše všechny soubory a podadresáře aktuálního adresáře:

$najít. -name "*" -print -o -name ".*" -print -depth

Takto mohou vypadat výsledky její práce:

./.Xdefaults ./.bash_logout ./.bash_profile ./.bashrc ./.bash_nistory ./file ./Dir/filel ./Dir/file2 ./Dir/file3 ./Dir/Subdir/file4 ./Dir/Subd ./Dir

2.1.11. - možnost montáže

Vyhledá soubory pouze v aktuálním systému souborů, kromě ostatních připojených souborové systémy, poskytuje příkazu find volbu -mount. Následující příklad hledá všechny soubory s příponou .xc v aktuálním oddílu disku:

$ find / -name "*.XC" -mount -print

2.1.12. Vyhledávání souborů a jejich archivace pomocí příkazu cpio

Příkaz cpio se používá především k zápisu souborů na pásku a čtení z pásky. Velmi často se používá ve spojení s příkazem find a přijímá z něj seznam souborů prostřednictvím roury.

Zde je návod, jak nahrát obsah adresáře na pásku /atd, /Domov A /apps:

$cd/
$ find etc home appa -depth -print | cpio -ov > dev/rmtO

Volba Příkaz cpio určuje režim zápisu souborů na pásku. Volba -proti (podrobný- verbální režim) je instrukce příkazu cpio, který hlásí každý zpracovávaný soubor.

Upozorňujeme, že názvy adresářů nemají na začátku znak '/'. Tímto způsobem jsou nastaveny relativní názvy cest k archivovaným adresářům, které při následném čtení souborů z archivu umožní jejich opětovné vytvoření v libovolné části operační systém a nejen v kořenovém adresáři.

2.1.13. Možnosti -exec a -ok

Řekněme, že jste našli potřebné soubory a chtějí ve vztahu k nim provádět určité akce. V tomto případě budete potřebovat volbu -exec (některé systémy umožňují spouštění příkazů ls nebo ls -1 pouze s volbou -exec). Mnoho uživatelů používá volbu -exec k vyhledání starých souborů k odstranění. Doporučuji spustit ls místo rm, abyste se ujistili, že příkaz find najde soubory, které chcete odstranit.

Po volbě -exec zadejte příkaz, který se má provést, následovaný složenými závorkami, mezerou, zpětným lomítkem a nakonec středníkem. Podívejme se na příklad:

$najít. -typ f -exec Xa -1 () ;
-rwxr-xr-x 10 kořenové kolo 1222 4. ledna 1993 ./sbin/C80
-rwxr-xr-x 10 kořenové kolo 1222 4. ledna 1993 ./sbin/Normal
-rwxr-xr-x 10 kořenové kolo 1222 4. ledna 1993 ./sbin/Rewid

Tím se vyhledají běžné soubory, jejichž seznam se zobrazí na obrazovce pomocí příkazu ls -1.

Chcete-li najít soubory, které nebyly aktualizovány v adresáři /logy během posledních pěti dnů a odstraňte je, spusťte následující příkaz:

$ najít /log" -type f -mtime +5 -exec rm () ;

Při přesouvání nebo mazání souborů byste měli být opatrní. Použijte volbu -ok, která vám umožní spouštět příkazy mv a rm v bezpečný režim(před zpracováním dalšího souboru je vystavena žádost o potvrzení). V následujícím příkladu příkaz find najde soubory s příponou .log a pokud byl soubor vytvořen před více než pěti dny, smaže jej, ale nejprve vás požádá o potvrzení této operace:

$najít. -name "*.LOG" -mtime +5 -ok rm () ;
< rm … ./nets.LOG >? na

Chcete-li smazat soubor, zadejte na a zabránit této akci - n.

2.1.14. Další příklady použití příkazu find

Podívejme se na několik dalších příkladů ilustrujících použití příkazu find. Níže je uveden postup, jak najít všechny soubory ve vašem počátečním adresáři:

$ find ~ -print

Najděte všechny soubory, pro které je bit nastaven SUID, následující příkaz umožňuje:

$najít. -typ f -trvalá +4000 -tisk

Chcete-li získat seznam prázdných souborů, použijte tento příkaz:

$ najít / -typ f -velikost 0 -exec Je -1 () ;

Jeden z mých systémů vytváří každý den protokol auditu systému. K názvu souboru protokolu je přidáno číslo, které umožňuje okamžitě určit, který soubor byl vytvořen později a který byl vytvořen dříve. Například verze souborů admin.logčíslováno postupně: admin.log.001, admin.log.002 atd. Níže je uveden příkaz find, který odstraní všechny soubory admin.log vytvořeno před více než sedmi dny:

$ find /logs -name ‘admin.log.1 -atima +7 exec rm () ;

2.2. tým xargs

S volbou -exec předá příkaz find všechny nalezené soubory zadanému příkazu, které jsou zpracovány najednou. Bohužel na některých systémech je délka příkazového řádku omezená, takže při zpracování velkého počtu souborů se může zobrazit chybová zpráva, která obvykle zní: "Příliš mnoho argumentů"(příliš mnoho argumentů) popř "Příliš dlouhé argumenty"(příliš velký seznam argumentů). V této situaci přichází na pomoc příkaz xargs. Zpracovává soubory přijaté z příkazu find po částech, nikoli všechny najednou.

Zvažte příklad, ve kterém příkaz find vrátí seznam všech souborů přítomných v systému a příkaz xargs na nich spustí příkaz file a zkontroluje typ každého souboru:

$ find / -type f -print I xarge.file
/etc/protocols: anglický text /etc/securetty: text ASCII

Níže je uveden příklad, který demonstruje hledání souborů výpisu, jejichž názvy příkaz echo vloží do souboru /tmp/core.log.

$ najít / -name core -print | xarge echo > /tmp/core.log

V následujícím příkladu v adresáři /apps/audit vyhledá všechny soubory, ke kterým mají ostatní uživatelé úplný přístup. příkaz chmod odebere jim oprávnění k zápisu:

$ najít /appe/audit -perm -7 -tisk | xarge chmod o-w

Náš seznam završuje příklad, ve kterém příkaz grep hledá soubory obsahující slovo " přístroj«:

$ najít / -typ f -tisk | xarge grep "zařízení"

2.3. Závěr

Příkaz find je vynikající nástroj pro vyhledávání různých souborů pomocí široké škály kritérií. Díky volbě -exec a také příkazu xargs lze nalezené soubory zpracovat téměř jakýmkoli systémovým příkazem.

Pokud často pracujete v příkazový řádek na počítači nebo serveru, kde není vůbec žádný grafický shell, budete dříve nebo později postaveni před úkol hledat soubory. Naštěstí Linux již má vestavěný příkaz, který vám umožní najít soubor v systému.

Dnes budeme hovořit o používání příkazu find - věřte mi, že stojí za to naučit se s tímto výkonným a pohodlným nástrojem pracovat.

Jak používat příkaz find

Jednoduše řečeno, základní syntaxe příkazu find je následující:

Najít /path parametry název_souboru

Pojďme pochopit schopnosti týmu

Vyhledejte soubor podle názvu

Prvním parametrem je cesta. Pokud netušíte, kde by se mohl soubor skrývat, nahraďte cestu znakem / - to stačí. Prohledávání celého disku však může být poměrně časově náročné, a pokud víte, kde se soubor může nacházet, zadejte složku, ze které chcete začít hledat (například ~ pro vyhledávání v domovské složce uživatele).

Nyní přejdeme k parametrům vyhledávání. Existují dvě možnosti vyhledávání souboru podle názvu:

  • jméno - hledání názvu souboru rozlišujícího malá a velká písmena
  • inname - hledání názvu souboru bez ohledu na velikost písmen

Je třeba si uvědomit, že v Linuxu je důležitý případ názvu souboru, a pokud potřebujete najít například soubor Ubuntu.txt, následující příkaz nepřinese žádné výsledky:

Najděte / -name ubuntu.txt

Můžete však použít příkaz iname a provést vyhledávání bez ohledu na velikost písmen:

Najděte / -name ubuntu.txt

Vyhledávání podle typu

Příkaz find vám umožňuje hledat více než jen soubory. Zde jsou typy, které vyhledávání úchytů podporuje:

  • f - běžný soubor
  • d - adresář
  • l - symbolický odkaz
  • c - znakové zařízení
  • b - blokové zařízení

Chcete-li například najít všechny adresáře v domovském adresáři aktuálního uživatele, které začínají na „config“, spusťte následující příkaz:

Najít ~ -type d -name config*

Výstup výsledků hledání do souboru

Pohodlná funkce výstupu výsledku příkazu do souboru bude mimořádně užitečná, pokud existuje mnoho výsledků hledání nebo je potřeba s nimi později pracovat. Například za účelem uložení seznamu všech nalezených konfigurační soubory do souboru conf_search, spusťte následující příkaz:

Najděte /etc -type f -name “*.conf” > conf_search

Vyhledávání souborů podle velikosti

Toto je velmi užitečná možnost, když vám dochází místo na disku a potřebujete zjistit, kam zmizel. Chcete-li například najít soubory větší než 1000 MB, spusťte následující příkaz:

Najít / -velikost +1000M

Lze použít následující zkratky velikosti:

  • c - bajtů
  • k - kilobajtů
  • M - megabajty
  • G - gigabajty
  • b - bloky 512 bajtů

To je jen několik způsobů, jak používat výkonný příkaz. Více způsobů lze nalézt v manuálu spuštěním příkazu