> > 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
> ...moze byt. Ja som to zapisal takto: > find . -type f | xargs grep -l XYZ | cpio -pduv /dst Pokud predem vis, jak se ty soubory (priblizne) jmenujou, je myslim vhodne takto filtrovat uz ten prvni find: pokud je v /src krome nekolika desitek tisic souboru, ktere obsahuji XYZ, zaroven nekolik desitek tisic souboru, ktere _neobsahuji_ XYZ a _nejmenuji_ se blabla* (a nejake takove tam jiste jsou, jinak bys udelal proste 'cp /src/* /dst'), pak budes vsechny tyto "nezajimave" soubory zbytecne grepovat, tj. vsechny je cele zbytecne prectes atd. Ve tvoji verzi sice odpada tomu findu prace s testem na -name, nicmene "zbytecne zkontrolovat jmeno" je porad o dost levnejsi nez "zbytecne kontrolovat obsah" (a cim vice souboru, a cim vetsich, tim bude ten rozdil markantnejsi). (Pri desitkach tisic souboru muzes ostatne usetrit i na tom 'cpio -v'). > > 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 > ...a tym padom to skopiruje len subory, teda -> /dst/blabla000123 To ovsem pouze v pripade, ze uz ta zdrojova adresarova struktura je placata, tj vsechno jsou to /src/blabla* (a tedy z pohledu tveho "cd /src ; find . ..." jsou to ./blabla*) a nikoli treba /src/some/where/blabla*. h. -- FreeBSD mailing list (users-l@freebsd.cz) http://www.freebsd.cz/listserv/listinfo/users-l