Použití find a vytvoření symlinků na soubory

Jurop

Použití find a vytvoření symlinků na soubory
« kdy: 10. 06. 2017, 16:49:53 »
Dobry den,

mozno by mi niekto vedel poradit. Nieco som uz poskusal ale vysledok nieje.

Cez find by som chcel najst posledny pridany subor v adresare napr. z dna 22.5. Podla toho vyhladat vsetky subory pridane v ten den.
Nasledne vytvorit symlinky na tieto subory do ineho adresara (../najnovsie/)

Dakujem za radu
« Poslední změna: 12. 06. 2017, 09:41:56 od Petr Krčmář »


trubicoid2

Re:find a symlink
« Odpověď #1 kdy: 11. 06. 2017, 00:04:26 »
no a co mas teda? co treba takto?
Kód: [Vybrat]
for i in "find adresar -type f -mtime +0"; do
     ln -s ${i} /kam/chci/linky
done


David1234

Re:find a symlink
« Odpověď #2 kdy: 12. 06. 2017, 15:35:54 »
no a co mas teda? co treba takto?
Kód: [Vybrat]
for i in "find adresar -type f -mtime +0"; do
     ln -s ${i} /kam/chci/linky
done

Je tam nutný ten for cyklus? Není lepší použít exec parametr příkazu find?
 

trubicoid2

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #3 kdy: 12. 06. 2017, 16:44:03 »
to by asi slo, ja nevedel, jak se ln tvari na vice argumentu, ale asi to projde

Kód: [Vybrat]
find adresar -type f -mtime +0" -print0 | xargs -0 -I {} ln -s {} /kam/chci/linky

trubicoid2

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #4 kdy: 12. 06. 2017, 16:47:28 »
jeste bez te jedne ", nejak mi to tam zustalo


David1234

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #5 kdy: 13. 06. 2017, 11:37:02 »
to by asi slo, ja nevedel, jak se ln tvari na vice argumentu, ale asi to projde

Kód: [Vybrat]
find adresar -type f -mtime +0" -print0 | xargs -0 -I {} ln -s {} /kam/chci/linky

Je xargs nutný? Takhle by to nefungovalo? :)
Kód: [Vybrat]
find adresar -type f -mtime +0 -exec ln -s {} /kam/chci/linky \;

trubicoid2

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #6 kdy: 13. 06. 2017, 11:49:40 »
xargs je obecně lepšejší  ;D umí divný soubory s mezerou třeba, jenom nevím, jestli se nemusí obalit {} uvozovkama nebo tak

David1234

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #7 kdy: 13. 06. 2017, 12:44:03 »
Zkoušel jsem postup bez xargs na souboru
Kód: [Vybrat]
touch "divny soubor..\@"
A podle všeho to s mezerou nemá problém. Pokud použiju xargs bude to pomalejší :)

Lol Phirae

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #8 kdy: 13. 06. 2017, 13:01:47 »
Zkoušel jsem postup bez xargs na souboru
Kód: [Vybrat]
touch "divny soubor..\@"
A podle všeho to s mezerou nemá problém.

To bude asi tím že tam žádné mezera není.  ::) #facepalm

nobody(ten pravej)

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #9 kdy: 13. 06. 2017, 13:53:39 »
To bude asi tím že tam žádné mezera není.  ::)
a mezi y a s je co? veverka? :-D

trubicoid2

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #10 kdy: 13. 06. 2017, 14:10:45 »
lolek: mesera tam je  :o

david: jo, funguje to i tak, ale proc by jako pro lolka mel byt xargs pomalejsi?

Kód: [Vybrat]
time find / -xdev -type f -iname '*' -print0 | xargs -0 ls -l  >/dev/null

real 0m10.280s
user 0m6.004s
sys 0m4.200s

Kód: [Vybrat]
time find / -xdev -type f -iname '*' -exec ls -l {} \; >/dev/null

real 7m13.774s
user 0m5.540s
sys 0m42.456s

zpomaleno asi 40x  ;)

trubicoid2

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #11 kdy: 13. 06. 2017, 14:19:56 »
no tak mozna ne, kdyz se pouzije xargs -I {} (v tomto pripade zbytecne), tak je to stejne pomale

Lol Phirae

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #12 kdy: 13. 06. 2017, 14:22:18 »
ale proc by jako pro lolka mel byt xargs pomalejsi?

Já jsem nepsal nic o tom, že je xargs pomalejší.

trubicoid2

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #13 kdy: 13. 06. 2017, 14:49:37 »
no to bylo pro davida ("david: ...")

"pro lolka" je misto "proboha" :) tobe vycitam jenom ze nevidis mezeru no

pro uplnost:

Kód: [Vybrat]
time find / -xdev -type f -iname '*' -print0 | xargs -0 -I {} ls -l {}  >/dev/null

real 6m50.614s
user 0m5.284s
sys 0m33.760s

David1234

Re:Použití find a vytvoření symlinků na soubory
« Odpověď #14 kdy: 13. 06. 2017, 15:12:47 »
No já vycházím z toho že v případě find + exec se použije binárka find která volá ln. V případě varianty s xargs se volá find ten předává přes rouru data xargs, který volá ln. Řekl bych že to musí prodloužit čas = protože je tam ta jedna binárka navíc. Ale třeba vyjímka potvrzuje pravidlo? :)