Bash grep paranccsal keresni húrok fájlok
grep - keresés a fájlok vagy húrok a sablon fájlt.
grep „keresési minta” „fájlnév”
Tegyük fel, hogy a / root rejlik három fájlt:
/root/.bash_history
/root/.bash_history
/ Root / teszt
-r keresése rekurzív át az összes fájlt a megadott könyvtárban. például:
#grep -r engedélyezett / root
/root/.bash_history:mv authorized_keys authorized_keys2
/root/.bash_history:chmod 600 authorized_keys2
/ Root / teszt: authorized_keys2 próbaszövegen
-h Ne nyomtasson a fájl nevét, ha keres több fájlon keresztül. például:
#grep Rh engedélyezett / root
mv authorized_keys authorized_keys2
chmod 600 authorized_keys2
authorized_keys2 próbaszövegen
-l kijelzők csak a fájl nevét, amelyben egy ilyen sor. Ha a fájl több ilyen sor, akkor a fájl neve csak egyszer jelenik meg. például:
#grep -rl engedélyezett / root
/root/.bash_history
/ Root / teszt
-c jeleníti száma találat. példa
#grep -c engedélyezett /root/.bash_history
3
-v Megjeleníti az összes sor, kivéve azokat, amelyek a megadott mintát.
-i nagybetű keresésekor. Azaz, ha az Ön által megadott keresési mintát kisbetűkkel az eredmény
is csökken sor, ahol találkozik a sablon nagybetűkkel.
-nem teszik n száma a megtalált sztring elején termelését.
-s Nem engedi hibát tûnnek fájlt, például.
-w Pattern Matching egy szónak, mint a keresés -w «auth» nem tartalmazza sorban eredményeket, ahol talált «hiteles», és csak a sorok, ahol otdelone szó auth.
grep kell egy kötelező paraméter, ahol a keresett szöveget - ez akár egy fájl vagy a szabványos bemeneten.
ha azt akarjuk, hogy keresni az összes fájlt egy mappába, és adjon meg egy nevet a mappa - ez nem fog a mappában az összes fájlt, mint a csapat vesz egy kötelező paraméter fájl nevét, hol kell keresni.
-r azt mondja, hogy meg kell keresni rekurzív, hogy van, hogy nézd meg az összes fájlt a megadott könyvtárban és fájlok almappákat. Nagyjából elmondható, hogy egy listát az összes fájlokat az összes almappájáról különböző szinteken a megadott mappában, és keresni ezeket a fájlokat.
Nem tudom, hogyan magyarázzam meg, hogy ne tévesszük össze)
A leírás több alkalmas arra, hogy néhány konkrét példát rekurzió programozás, de nem felel meg teljes mértékben a globális szimbólum rekurzió.
Például rekurzív belenézel matryoshka - egy eszközt, hogy nyissa ki az összes kisebb fészkelő babák belsejében egy nagy, és ellenőrizze az egyes). És nem csak megnyitni a legnagyobb, és azt mondják megnyitása nélkül a fennmaradó kisebb benne. Ez ebben az összefüggésben a grep paranccsal
Megértem:
#grep engedélyezett / root - keresés csak a mappa / root;
#grep -r engedélyezett / root - keresi a / root mappát és annak almappákat;
De az előző végül rájöttek:
1) szerver # grep «12345» 1_check.sh
echo -ne "$ 12345";
ssh 12345 $ 'lsof | wc -l'
2) szerver # grep -r «12345» / racl / ep /
./1_check.sh: echo -ne «12345 $";
./1_check.sh: ssh 12345 $ 'lsof | wc -l'
Az első esetben azt kérik konktetnom fájl
A második - az összes almappa / racl / ep /
Igen. Mindent megtalál, erősebb, mint én, ahol akkor is végrehajtja a parancsokat a keresési eredmények fölött a -exec különböző keresési lehetőségeket. Nos, minden csapat megoldja a problémát. Leggyakrabban azt használja a grep -rli kulcsokat. Ez azt jelenti, sorolja fel az összes fájlt (-l) rekurzívan az összes almappát (-r), ahol a kifejezés előfordul érzéketlen (-i).
grep eredményeket tud dolgozni ciklus alkalmazásával for i in. Például törölni az összes fájlt, amely megtalálható a kifejezés «vírus»:
for i in `grep -rli«vírus»/` .; do rm -rf $ i; done
Nos, van, elválasztva lehet egy csomó különböző műveleteket az eredmény.
Néha lehet használni xargs, ebben az esetben, hogy távolítsa el a fájlokat a következő lesz:
grep -rli «vírus» ./ | xargs rm -rf
grep még kényelmesebb keresni több kritérium. Például felsorolni az összes fájlt a / root, ahol van egy sor «rm» vagy «cp»:
Itt ez segít -E kulcsa meg több keresési feltételek ...
grep -rliE «rm | cp» / root