On Apr 10 13:21:58, Lubomir Majersky wrote: > Uloha (opravena): > Najst medzi 10-kami tisic suborov subory, ktorych obsah (vnutri) > vyhovuje vzorke "XYZ" a tie nasledne prekopirovat (alebo presunut) do > ineho adresara. Spolocnym znakom vsetkych tych suborov je, ze cast nazvu > je rovnaka. Aby to bolo este zrozumitelnejsie, tak uvadzam zjednoduseny > tvar nazvov suborov: > "blabla000001", "blabla000002",..."blabla00000X",..."blablaXXXXXX"
find /src -name blabla\* -type f | xargs grep -l XYZ | cpio -pduv /dst Na kopirovani velkeho poctu souboru (aka "cp: arg list too long") je cpio(1) vybornej: cpio -p (pass-through) cte seznam souboru ke kopirovani na stdinu. Nicmene cpio(1) zachovava pri tomto kopirovani celou cestu, neboli zachova celou adresarovou strukturu te mnoziny souboru; tj. napriklad /src/path/some/where/blabla000123 prejde na /dst/path/some/where/blabla000123 nikoli na /dst/blabla000123 Otazka je, zda to vyhovuje, nebo maji byt vsechny prekopirovany do spolecneho adresare as in /dst/blablaXXXXXX. Pokud chces tu strukturu zachovat (anebo Ti to aspon nevadi), viz vyse. Pokud maji vsechny prijit primo do /dst, mas zaruku, ze se v /src nevyskytuje soubor stejneho jmena v ruznych adresarich? Tj napr. /src/path/blabla123 a /src/other/path/blabla123, kdy bys jednu kopii /dst/blabla123 prepsal druhou, pozdejsi? Pokud takovou zaruku nemas, tak je holt do jednoho adresare kopirovat nemuzes (leda by sis je prepisoval, coz predpokladam vadi). Pokud to zaruceno mas, staci pri kopirovani "zahazovat cestu" - toho se da napr. v tar(1) a pax(1) dosahnout pomoci '-s replstr', coz ale cpio(1) neumi. Takze vaianty pro pax(1): find /src -name blabla\* -type f | xargs grep -l XYZ | pax -rw /dst/ find /src -name blabla\* -type f | xargs grep -l XYZ | pax -rws ',^.*/,,' /dst/ H. -- FreeBSD mailing list (users-l@freebsd.cz) http://www.freebsd.cz/listserv/listinfo/users-l