Grep and Find Operators Pravidlá pre Linux
- 1770
- 479
- Vít Slobodník
Spočiatku operačné systémy UNIX/Linux nemali grafické rozhranie, pretože sa zamerali na používanie servera. Dnes v tejto súvislosti nie sú horšie ako Windows, a preto používatelia používajúce tento OS zriedka poznajú syntax a účel hlavných príkazov Linuxu. Medzitým je to veľmi výkonný nástroj, ktorý vám umožňuje rýchlo vykonávať operácie, ktoré sú pomocou základných nástrojov OS problematické alebo nemožné. Dnes sa stretnete s operátormi GREP a GREP, ktoré sú základné pre systém súborov všetkých distribúcií Linuxu.
Vymenovanie prevádzkovateľov Find a GREP
Tím Find v systéme Linux je operátor príkazového riadku, ktorý pracuje s súborom obchádzaním existujúcej hierarchie. Umožňuje vám vyhľadávať súbory pomocou mnohých filtrov, ako aj vykonať určité akcie nad súborom po ich úspešnom vyhľadávaní. Medzi kritériami prehľadávajúcich súborov patria takmer všetky dostupné atribúty, od dátumu vytvorenia po rozlíšenie.
Tím GREP v systéme Linux sa vzťahuje aj na vyhľadávacie nástroje, ale vo vnútri súborov. Doslovný preklad tímu je „globálna tlač regulárnych výrazov“, ale pečať znamená záver výsledkov práce na zariadení predvolene, čo je zvyčajne monitor. Má obrovský potenciál, operátor sa používa pomerne často a umožňuje vám vyhľadávať v rámci jedného alebo viacerých súborov podľa zadaných fragmentov (šablóny). Pretože terminológia v systéme Linux sa výrazne líši od taká, v systéme Windows, mnohí používatelia majú značné ťažkosti s používaním týchto príkazov. Pokúsime sa eliminovať túto nevýhodu.
Grep a nájdite syntax
Začnime s operátorom Find. Syntax tímu vyhľadávania súborov vyzerá takto:
Nájdite [kde hľadať] [parametre] [-optic] [akcia]
Niektoré používajú parametre:
- -Hĺbka: Vyhľadajte v aktuálnom priečinku a subkatalisti;
- -Verzia: Prineste verziu tímu;
- -Tlač: Zobraziť kompletné názvy súborov (v systéme Linux môžu byť ľubovoľne veľké);
- -Typ F: Vyhľadajte výlučne súbory;
- -Typ D - Vyhľadajte iba adresár (priečinky).
Zoznam dostupných možností (označený pomocou spojovníka):
- Názov: Vyhľadávanie súborov podľa názvu;
- Používateľ: Vyhľadajte pod názvom vlastníka súboru;
- Perm: Podľa atribútu „prístupový režim“;
- MTIME: V čase poslednej zmeny (úpravy) súboru;
- Skupina: podľa skupiny;
- ATIME: do dátumu posledného otvorenia spisu;
- Novšie: Vyhľadávanie súboru s dátumom viac ako smernicou zadanou v šablóne;
- Veľkosť: podľa veľkosti súboru v bajtoch;
- nouser: Vyhľadajte súbory, ktoré nemajú zadaný atribút „vlastník“.
Syntax GREP:
Grep [Options] šablóna [kde hľadať]
Možnosti by sa mali chápať ako ďalšie objasňujúce parametre, napríklad použitie inverzného režimu alebo hľadanie daného počtu riadkov.
Šablóna označuje, čo je potrebné hľadať pomocou priamo špecifikovaného riadku alebo regulárneho výrazu.
Možnosť použitia regulárnych výrazov môže výrazne rozšíriť možnosti vyhľadávania. Indikácia štandardného záveru môže byť užitočná, ak úlohou je filtrovať chyby zaznamenané v protokoloch alebo vyhľadať proces PID vo výsledkoch príkazu PS, ktorý môže byť viacstránkový.
Zvážte najbežnejšie parametre GRAS:
- -B: Pred vydaním výslednej čiary zobrazte číslo bloku;
- -C: Je potrebné vypočítať počet položiek požadovaného fragmentu;
- -I: Vyhľadávanie bez registrácie;
- -N: Vydajte číslo riadku štandardnému výstupnému zariadeniu, v ktorom bol nájdený požadovaný fragment alebo šablóna;
- - L: V dôsledku vydania by sa mali vyskytnúť iba názvy súborov s nájdeným fragmentom vyhľadávania;
- -S: Ignorujte výstup chyby;
- -W: Vyhľadajte fragment obklopený na oboch stranách priestormi;
- -V: Invertované vyhľadávanie, to znamená zobrazenie všetkých riadkov, ktoré neobsahujú daný fragment;
- -E: Parameter naznačuje, že nasleduje ďalej regulárny výraz, ktorý má svoju vlastnú syntax;
- -AN: záver požadovaného fragmentu a predchádzajúcich n riadkov;
- -BN: To isté, ale s riadkami idú po šablóne.
Teraz má zmysel presunúť sa z teoretickej časti k praktickej.3
Príklady používania nástrojov
Ak viete, čo je kombinatorická, potom by sa malo zastúpiť skutočný počet možných kombinácií vyhľadávacích tímov. Obmedzíme sa na iba tie najužitočnejšie príklady, ktoré pre vás môžu byť užitočné počas práce.
Vyhľadajte text v súboroch
Majme práva administrátora a máme za úlohu nájsť konkrétneho používateľa v obrovskom súbore hesla. Budeme potrebovať pomerne jednoduchý tím, ktorý označuje cestu zverejňovania súborov:
Grep NameUser /etc /passwd
Ak je výsledok vyhľadávania pozitívny, získame výslednú líniu približne nasledujúceho typu:
NameUser: X: 1021: 1021: NameUser ,,,:/Home/user:/bin/bash
Ak potrebujete vyhľadať fragment textu bez toho, aby ste zohľadnili register registra, tím bude vyzerať takto:
GRAS -I "NAMEUSER" /etc /passwd
V takom prípade sa nájdu užívateľ NameUser a jeho „menovec“, ako aj všetky ostatné možné kombinácie.
Záver niekoľkých riadkov
Získajme všetky chyby z protokolu okna shell xorg.protokol. Úloha je komplikovaná skutočnosťou, že po chybnom reťaze môže nasledovať reťazec obsahujúci cenné informácie. Rozhoduje sa, či vynútime príkaz zobrazovať niekoľko riadkov pomocou riadku „pp“ ako šablóny:
GRAS -A5 "PP"/var/log/xorg.0.protokol
Dostávame čiaru obsahujúcu šablónu a 5 riadkov.
GRAS -C3 "PP"/var/log/xorg.0.protokol
Riadok výstup s fragmentom textu a tromi riadkami pred a po.
Používanie regulárnych výrazov v Grep
Toto je jeden z najvýkonnejších nástrojov Linux, ktorý výrazne rozširuje možnosť vytvorenia šablóny vyhľadávania. Regulárne výrazy majú svoju vlastnú syntax, celkom komplikované. Nebudeme sa do toho ponoriť, obmedzíme sa na príklad použitia RV. Ako už viete, na označenie toho, že sa ďalej používa regulárny výraz, používa sa parameter -e.
Nechajme v súbore správ.2 Musíme chytiť všetky riadky na september:
Grep "^sep 09"
Výsledkom bude niečo také:
Sep 09 01:11:45 GS124 NTPD [2243]: Čas RESET +0.197579 s
Sep 09 01:19:10 GS124 NTPD [2243]: Čas RESET +0.203484 s
Ak chcete hľadať šablónu umiestnenú na konci čiarového riadku, používa sa symbol „$“:
Grep “.$ “Správy
Výsledok:
17. júna 19:01:19 Kloneme jadro: Daemon Log Daemon Term.
11. sep.
A tu je príklad použitia regulárneho výrazu, ktorý vám umožňuje hľadať riadky obsahujúce akékoľvek čísla okrem nuly:
Grep "[1-9]"/var/log/xorg.1.protokol
Pomocou rekurzívneho vyhľadávania v Grep
Ak ste oboznámení s pojmom „rekurzia“, potom sa v systéme Linux používa táto technika najmä na vyhľadávanie fragmentu v niekoľkých súboroch umiestnených v katalógu a jeho podkratách. Option -R bude označený prítomnosťou rekurzie. Pozrime sa na fragment „menomain.Org “v súboroch umiestnených v podkaláloch priečinka /etc /apache1:
Gras -r "menomain.Org "/etc/apache1/
Výsledkom môže byť niečo také:
/etc/apache1/vHosts.D/ menomain.Orgán
Ak názov súboru nie je potrebný, používame -h: h:
Grep -h -r "menomain.Org "/etc/apache1/
Hľadať slová
Standard Vyhľadávanie fragmentu QWE sa skončí vydaním všetkých slov, v ktorých sa tento fragment nachádza: KBQWE, QWE123, AAFRQWE32. Na obmedzenie vyhľadávania iba daným fragmentom musíte použiť parameter -w:
Gras -w "qwe", kde nájdete
Vyhľadajte dve alebo viac slov
Komplikácia úlohy: Potrebujeme nájsť všetky riadky, v ktorých sa nachádzajú dve slová. Tím bude taký:
Gras -w "word01 | word02" kde_ nájsť
Počet riadkov
Ak je to potrebné na výpočet. Koľkokrát sa požadovaný fragment nachádza v súbore, používame návrh s parametrom -C:
GRAS -C "'Text", kde_ nájdete
Parameter -n pomáha zistiť, v ktorej riadku sa nájde požadovaná šablóna:
Gras -n "nuser" /etc /passwd
Invertované vyhľadávanie pomocou Grep
Úlohou vyhľadávania pomocou Grep pomocou obsahu súborov nie je nájsť samotný záznam, ale riadky, v ktorých tento fragment chýba. Možnosť -v nám pomôže:
Gras -v "txt" kde_ nájdete
Výstup názvu súboru
Dovoľte, aby ste našli všetky súbory v zadanom adresári obsahujúcom požadovanú šablónu. To sa dá dosiahnuť pomocou parametra -l. Úplný príkaz pre výstup súborov obsahujúcich reťazec „sekundárny“ v priečinku /ETC bude teda vyzerať nasledovne:
Grep -l "sekundárny"
Farebný výstup pomocou Grep
Pobyt s inou farbou je skvelý spôsob, ako vizualizovať požadovaný záznam, ktorý výrazne znižuje zaťaženie očí, ak sa operácia často vykonáva. Ukazuje sa, že GRAS má možnosť pre tento výstup výsledkov vyhľadávania:
Grepor --farebná „sekundárna“ /atď
Postupujeme k zváženiu príkladov použitia nástroja Find Utility v systéme Linux.
Vyhľadajte všetky súbory
Na stiahnutie zoznamu súborov umiestnených v aktuálnom katalógu používame príkaz v nasledujúcom formáte:
Nájsť .
Ak potrebujete zobraziť celý názov súborov, používame príkaz
Nájsť . -Tlač
Výstup súboru v danom katalógu
Ak chcete vyhľadať súbory v priečinku definovanom používateľom, používame príkaz
Nájsť ./atď
Ako však môžete nájsť súbory obsahujúce daný fragment v aktuálnom katalógu:
Nájsť . -NÁZOV "*.Gif "
Ak sa musí vyhľadávanie vykonať bez účtovania registra, príkaz je potrebné upraviť:
Pri hľadaní podľa mena neberte do úvahy register:
Nájsť . -Vo mne "*.Gif "
Obmedzenie hĺbky vyhľadávania
Ďalšou pomerne typickou úlohou je vyhľadávanie súborov v konkrétnom priečinku podľa daného mena:
Nájsť . -maxDepth01 1 -name "*.Html "
Prevrátenie šablóny
Už sme zvážili analóg tímu za hľadanie riadkov, ktoré neobsahujú daný fragment. Rovnakým spôsobom môžete robiť so súborom, ktoré nezodpovedajú danej šablóne:
Nájsť . -Nie -name „User*“
Vyhľadajte podľa niekoľkých kritérií
Uvádzame príklad príkazového riadku pomocou nástroja Find Utility pre vyhľadávanie podľa dvoch kritérií pomocou operátora NOT (vylúčenia):
Nájsť . -Pomenujte „user“ -NOT -Name “*.Html "
V takom prípade sa nenájdu súbory, ktorých názov obsahuje fragment používateľa, ale ktoré majú rozšírenie. Namiesto operátora výnimky môžete použiť logické „/“ alebo „::
Nájsť -Name "*.js "-o -Name"*.Sql "
V tomto prípade dostaneme kompletný zoznam súborov s oboma rozšíreniami umiestnenými v aktuálnom adresári.
Vyhľadajte v niekoľkých katalógoch
Ak potrebujeme nájsť súbory v dvoch katalógoch, jednoducho uveďte z medzery:
Nájsť -typ f ./test01 ./test02 -name "*.Sql "
Vyhľadajte skryté súbory
V systéme Linux, rovnako ako v systéme Windows, existujú skryté súbory, ktoré sa pri používaní príkazu Nájdite zobrazené bez špeciálneho symbolu. Tento symbol je Tilda a smernica bude mať nasledujúci vzhľad:
nájsť ~ -name ".*“
Vyhľadajte súbory v Linuxe podľa povolení
Niekedy je potrebné filtrovať katalóg pre určitú masku práv. Napríklad, ak potrebujeme nájsť súbory s atribútom 0661, používame príkaz:
Nájsť . -Perm 0661
Úloha filtrovania súborov pomocou atribútu „Iba pre čítanie“ sa vyrieši takto:
Nájsť /etc /user -Perm /u = r
Ako však bude vyzerať vyhľadávanie spustiteľných súborov v katalógu ETC:
Nájsť /etc -perm /a = x
Vyhľadajte súbory podľa skupín/používateľov
Správca musí často čeliť úlohe hľadania súborov, ktoré sú vlastnosťou konkrétneho používateľa a/alebo skupiny. Vyhľadajte používateľa:
Nájsť . -Užívateľ Slavko
Pre skupiny používateľov sa používa ďalší parameter:
Find /var -skupinové devs
Vyhľadajte podľa dátumu poslednej úpravy
Viditeľný formát dátumu súboru v systéme Linux OS je presne dátum jeho úpravy (rovnaký princíp sa používa v systéme Windows). Na vytvorenie zoznamu podľa dátumu sa používa možnosť MTIME. Povedzme, že musíme nájsť zmenené súbory pred dvoma mesiacmi:
Nájdite /Home -Mtime 60
Medzi atribúty súboru je dátum jeho posledného objavu (bez vykonania zmien). Takéto súbory sú zobrazené nasledujúcim príkazom:
Nájdite /domov -time 60
Môžete tiež nastaviť časový interval. Na vyhľadávanie súborov upravených pred štyrmi do dvoch mesiacov používame smernicu:
Nájdite /home -mtime +60 -mtime -120
Ale ako nájsť čerstvo zmenené súbory (pred dvoma hodinami):
Nájdite /Home -Cmin 120
Vyhľadajte súbory podľa veľkosti
Mať podozrenie, že niekto používa disk na filmy? Hľadáme veľkosť súborov 1.4 GB:
Nájdite / -izáciu 1400 m
Alebo použite rozsah:
Nájdite / -size +1400 m -2800 m
Vyhľadajte prázdne súbory/katalógy
Áno, nebuďte prekvapení. Úloha obnovenia objednávky v médiách je charakteristická nielen pre OS Android. V Linuxe sa rozhoduje s pomocou takejto smernice:
Nájsť /var -type f -eempty
Príklad akcií so nájdením súborom
V systéme Linux môže tím Find rekurzívne vykonávať určité akcie pomocou týchto súborov, hľadanie, na ktoré vykonávate. Ak chcete vykonať príkazy súborov, musíte použiť parameter exec. Smernica na zobrazenie informácií o všetkých súboroch pomocou príkazu LS bude teda vyzerať takto:
Nájsť . -exec ls -l \;
Ale ako jednoducho môžete odstrániť dočasné súbory s danou maskou v adresári /home /temp:
Nájsť /tmp -type f -name "*.html ”-exec rm -f \;
Samozrejme, pre začiatočníkov sa zdá, že použitie príkazového riadku s obrovským počtom možností bude trochu prepracovaným spôsobom, ale v systéme Linux je to v poradí vecí. A ako by ste vyriešili problémy opísané tu v systéme Windows? To je rovnaké. V tomto aspekte je Linux jasne pred nami.