Portál AbcLinuxu, 11. května 2025 04:26

Dotaz: Vyhladávání v textových souborech

13.1.2008 21:33 motorcb | skóre: 12
Vyhladávání v textových souborech
Přečteno: 530×
Odpovědět | Admin
Zdravím. Mám několik tisíc textových souborů(txt) a potřeboval bych zkopírovat všechny soubory do speciální složky,které obsahují vyhledávané slovo například "ahoj". Dokázal by někdo vytvořit nějaký script,který by to dokázal?Je mi jedno v jakém programovacím jazyce to bude.Díky za jakékoliv nakopnutí :)
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Fuky avatar 13.1.2008 21:49 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
Odpovědět | | Sbalit | Link | Blokovat | Admin

$ cd /adresar/s/txt/soubory
$ grep -rl ahoj . |xargs -i cp --parents {} /adresar/pro/kopirovani/souboru/s/ahoj

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
13.1.2008 22:05 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
Odpovědět | | Sbalit | Link | Blokovat | Admin
cd /do/adr/se/soubory/
grep -ilR 'ahoj' . | xarg cp -t /kam/zkopirovat/
Fuky avatar 13.1.2008 22:25 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech

Bacha, volba -t ve verzi 5.2.1 neexistuje, ale ve verzi 5.97 už je. Každopádně jako --target-directory existuje i ve starší verzi.

Jinak pokud nepoužijete --parents (append source path to DIRECTORY) přepíší se vám soubory se stejnými názvy.

13.1.2008 23:01 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
O neexistenci parametru -t v některých verzích jsem nevěděl, díky.
Jinak pokud nepoužijete --parents (append source path to DIRECTORY) přepíší se vám soubory se stejnými názvy.
Vycházel jsem z dotazu, kde tazatel chce zkopírovat soubory do jiného adresáře, takže zde přepsání nehrozí.
13.1.2008 23:16 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
Parametr zabraňující přepsání existujících souborů je -i|--interactive
15.1.2008 00:13 motorcb | skóre: 12
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
Super.Diky moc,funguje,tak jak ma,a nevedel by nekdo prosim,jak zkopirovat soubor,ktery obsahuje kdekoliv v text ' nebo " (pr: I'm, It's ,...)
??? Diky moc,ale uz se s tim peru dlouho a nemuzu to vyresit :(((
15.1.2008 00:44 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
Stačí zmeniť grep-om hľadaný text na niečo ako "[\"']"
15.1.2008 12:02 motorcb | skóre: 12
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
Bohužel nefunguje:
delli:~/perl/# grep-om "[\"']" . | xarg cp -t /next/
-bash: xarg: command not found
-bash: grep-om: command not found
15.1.2008 13:00 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
grep-om je 7. pád od grep ;-)
15.1.2008 13:40 motorcb | skóre: 12
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
delli:~/perl# grep -ilR "[\"']" . | xarg cp -t /next
-bash: xarg: command not found
ani
delli:~/perl# grep -ilR [\"'] . | xarg cp -t /next
>
>
>

ani dokonce
delli:~/perl# grep -ilR '[\"']' . | xarg cp -t /next
>
>
>

nefunguje :( Tak ted uz vazne nevim co delam spatne :(
15.1.2008 14:03 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
Program sa volá xargs (a nie iba xarg).
wolf09 avatar 15.1.2008 11:44 wolf09 | skóre: 30
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud potrebujete hledat v celem adresarovem stromu tak toto : find ./ -type f -exec grep -l retezec {} \;
Zkusili jste to vypnout a znovu zapnout ?
15.1.2008 12:48 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Vyhladávání v textových souborech
brr, exec

find "$dir" -type f -print0 | xargs -0 grep -lZ retazec | cpio -pdamu0 "$target_dir"

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.