Portál AbcLinuxu, 13. května 2025 22:40

Dotaz: Symbolické odkazy

29.5.2007 09:18 Alfons Mucha
Symbolické odkazy
Přečteno: 729×
Odpovědět | Admin
Měl bych dotaz jak v terminálu vytvořit všechny symbolické odkazy na soubory vetši nez 2kb... Nevím jak to udělat bez cyklu , ale musí to jít

find * -size +1k | ln -s odkaz

takhle mi to udela jen jeden, odkaz což je jasny, další se přepíšou. Díky moc za radu
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.5.2007 09:43 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Symbolické odkazy
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je potřeba těm odkazům dát různá jména. Takže třeba
find -size +1k -exec ln -s \{\} \{\}.odkaz \;
Nebude to fungovat na soubory s divnými znaky v názvu (např. mezery), tam by asi bylo vhodné použít xargs.
29.5.2007 10:06 Alfons Mucha
Rozbalit Rozbalit vše Re: Symbolické odkazy
díky, jen hloupej dotaz co znamená to -exec a proč ty závorky jsou opačné, to je nějaký regulární výraz ? Jsem začátečík
29.5.2007 10:26 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Symbolické odkazy
Hloupej dotaz to není, protože find trochu netypický příkaz, -exec je parametr příkazu find který to co je uvedené za tímto parametrem provede jako příkaz (pro každý nalezený soubor).

Asi jako když napíšete exec prikaz

Symboly {} budou nahraženy názvem aktuálně nalezeného souboru, neptejte se mě proč zrovna {} :D To by asi byla exkurze do historie. V příkazu je možné používat i středníky, takže celý ten příkaz se musí ukončít \; což je escapovaný středník, tedy něco jako středník ale ne středník ;)

Někdo {} také escapuje, momentálně mě nenapadá proč.
29.5.2007 10:51 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Symbolické odkazy
Někdo {} také escapuje, momentálně mě nenapadá proč.
Kdysi mi nějaký shell vynadal, protože znaky { a } nějak interpretoval. Od té doby je ve findu vždy escapuji. Ale teď jsem to zkoušel v zsh, bash a sh, a všude to projde… Takže někdo to escapuje prostě ze zvyku :-)
29.5.2007 10:24 pakanek | skóre: 28 | Vyškov
Rozbalit Rozbalit vše Re: Symbolické odkazy
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/usr/bin/env bash

for FILE in $(find * -size +1k)
do
    ln -s $FILE $(echo $FILE | \
    awk 'BEGIN { FS="/" } { print $NF })
done
Jsi si jist tou hvezdickou? Nemel by jsi spise pouzit '/' jako path, pokud chces vyhledat vsechny soubory vetsi 1Kib?
Všechno dobré je pro něco zlé.
29.5.2007 10:32 Alfons Mucha
Rozbalit Rozbalit vše Re: Symbolické odkazy
No já myslel že hvězdička mi právě najde všechny , jinak všem moc díky za rady
29.5.2007 10:47 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Symbolické odkazy
No když to tak shrneme, nejobvyklejší je asi tečka . jako pro projdení všech souborů a adresářů rekurzivně počínaje aktuálním, někdo nepíše nic , což se chová stejně jako aktuální adresář, a použití hvězdičky * bude asi fakt z neznalosti ale v důsledku to najde všechny neskryté soubory a adresáře + rekurze v aktuálním adresáři, takže jediný zádrhel by asi byl kdyby autor chtěl uvažovat i .dotfiles v aktuálním adresáři, pak by měl problém. (Předpokládám standardně nastavený globbing.)

P.S. k tomu $(echo $FILE | omg, awk 'BEGIN { FS="/" } { print $NF }) chybí vám tam ukončovací apostrof ', ale imho je to typický příklad pro basename '$FILE' nebo ${FILE##*/}

Jinak samozř. jestli se mají vyrábět linky v aktuálním adresáři na nalezené soubory, tak by jako startovací měl být nějaký adresář aby to nedělalo linky samy na sebe a navíc ještě nějak zařídit unkátnost jmen.
29.5.2007 11:30 Alfons Mucha
Rozbalit Rozbalit vše Re: Symbolické odkazy
Tak sem debil, ted chci udelat ze souborum vetsim nez 3 kb dam pryc práva na otevřreni :

find -size +3k -exec chmod u-x \{\} \{\} \;

ale zavre mi to cely adresar, kde to delam.

Kde je pls chyba :))
29.5.2007 11:40 alkoholik | skóre: 40 | blog: Alkoholik
Rozbalit Rozbalit vše Re: Symbolické odkazy
Protoze ti nejdriv najde aktualni adresar (.) a odebere mu prava na otevreni.
Najdi si "-type f" v manualu findu.
29.5.2007 12:03 Alfons Mucha
Rozbalit Rozbalit vše Re: Symbolické odkazy
jo diky funguje

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.