Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: fotka 06. 11. 2014, 23:07:03
-
Ahoj,
mám bash skript a příkaz find jež je součástí "for" cyklu ,ůže naleznou třeba i desítky tisíc souborů, tak mě zajímá jestli je to možná takto použít pokud mám asi 6gb volné RAM a nepříliš rychlý disk na cachování.
for filepath in $(find /home ***);do
for phrasse in $(cat phrasses);do
grepout=$(grep ***)
if [[ "$grepout" == *"some phrasse"* ]];then
echo "phrasse found in $filepath"
fi
done
done
-
$(find /home ***) -- to je ta proměnná kde bude hodně výsledků
-
for phrasse in $(cat phrasses);do
A saphra! ;D
-
ano
-
Nejde jen o to, že dat bude hodně. Problém je i v tom, jak zjistit, kde jeden název končí a jiný začíná – názvy můžou obsahovat mezery…
Lepší je nepoužívat cyklus a proměnné, ale zpracovat to proudově, předat přes rouru. Jak find, tak xargs umí hodnoty oddělené nulovým bajtem:
find auto/ -print0 | xargs -0 -L 1 echo
-
Jen hodně rychle orientačně: řekněme, že jeden znak má jeden bajt. Jeden soubor asi nebude mít v průměru delší cestu, než třicet znaků. Krát deset tisíc, to je něco ke 300 KiB. Kolik paměti sežere Bash? ::)
Spíš bych se bál, jestli procesor rovnou nespáchá sebevraždu, pokud mu naservíruješ pár vnořených cyklů s desítkami tisíc iterací v každém. 8)
-
A nechces nam rict k cemu to chces pouzit ? proc mam pocit ze to chces pouzit na vyhledani fraze v X souborech ? (Kod jsem tak bez premysleni prejel ocima)
grep -R "find me" ./folder/lotofiles
ti nestaci ?
-
for phrasse in $(cat phrasses);do
grepout=$(grep ***)
if [[ "$grepout" == *"some phrasse"* ]];then
echo "phrasse found in $filepath"
fi
done
grep -E "(první|druhá|třetí)" je rychlejší. A pro ještě rychlejší hledání je tu http://ss64.com/bash/fgrep.html.
-
Doporučuju podívat se na grep -f a find -exec, v tomto pořadí.
-
mam dotaz neslo by aby fotka mel vlastni vlakno na forum.root.cz neco ve smyslu "hloupe a jeste hloupejsi dotazi administratora" nebo mozna ve zkratce "bastleni pro profiky aneb je nam jedno jak dlouho script pobezi a kolik vezme systemovych prostredku hlavne ze to ma spoustu radku a je co prezentovat"
-
Vypise mena suborov, ktore obsahuju "search pattern":
find /home -exec grep -l "search pattern" {} \;
-
Fotka uz svoje tema ma http://forum.root.cz/index.php?topic=9861.msg108336#msg108336 tak by si mel hrat tam chlapec, stejne nechapu proc se tady porad pta, kdyz navstevuje 15 dalsich linux for, asi se mu uz vsude jinde taky vysmali.
-
děkuji za příklady příkazů, já ale potřebuji vyhledat asi 20 frází, které obsahují lomítka, oba druhy uvozovek, středníky a lomené závorky.. nevím jak bych to dal do těch Vašich grepů.. a find -execů
-
děkuji za příklady příkazů, já ale potřebuji vyhledat asi 20 frází, které obsahují lomítka, oba druhy uvozovek, středníky a lomené závorky.. nevím jak bych to dal do těch Vašich grepů.. a find -execů
http://lmgtfy.com/?q=linux+man+fgrep
-
Takže bych měl použít například find a jako hodnotu -exec dát: fgrep -f /soubor_s_vecmi_co_najit_v_souborech ?
a výsledek toho findu budou cesty k souborům které obsahují všechny ty věci co chci hledat? je to efektivní způsob?
(ten find má hodně parametrů, potřebuju ho, grep -Ril asi nemůžu použít protože chci grepovat jen určité soubory (malé, změněné nedávno, s určitou příponou apod..)
-
Takže bych měl použít například find a jako hodnotu -exec dát: fgrep -f /soubor_s_vecmi_co_najit_v_souborech ?
a výsledek toho findu budou cesty k souborům které obsahují všechny ty věci co chci hledat? je to efektivní způsob?
(ten find má hodně parametrů, potřebuju ho, grep -Ril asi nemůžu použít protože chci grepovat jen určité soubory (malé, změněné nedávno, s určitou příponou apod..)
Přečetl sis nějaký ten man?
Zkusil's něco? Co to udělalo?
Pokud víš, že ty Tvoje patterny nebudou nějaké 'hi-fi' regulární výrazy, použij fgrep (grep -F ...), jinak ten egrep (grep -E ...).
https://www.google.cz/search?hl=cs&as_q=using+find+and+egrep (https://www.google.cz/search?hl=cs&as_q=using+find+and+egrep)
...
a výsledek toho findu budou cesty k souborům které obsahují všechny ty věci co chci hledat? je to efektivní způsob?
Co si představuješ pod pojmem efektivní v tomto případě?