Portál AbcLinuxu, 16. června 2025 17:29


Dotaz: Hromadná oprava softlinků

4.3.2008 22:49 David Semančík
Hromadná oprava softlinků
Přečteno: 288×
Odpovědět | Admin
Zdravím,

potřeboval bych hromadně opravit softlinky, které původně vedly na soubory na sdílené (Linux a Windows) FAT partici. Nově jsou originální soubory přesunuty na Linux. Konkrétně potřebuji všechny softlinky v určitém adresáři a jeho podadresářích opravit tak, aby nevedly na /media/hdc5/*, ale na /home/public/*.

Díky za každý tip.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.3.2008 08:57 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Hromadná oprava softlinků
Odpovědět | | Sbalit | Link | Blokovat | Admin
ln -s /home/public /media/hdc5
5.3.2008 09:55 David Semančík
Rozbalit Rozbalit vše Re: Hromadná oprava softlinků
Díky, tohle mě napadlo, vyzkoušel jsem a funguje to.
5.3.2008 09:24 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Hromadná oprava softlinků
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vytvořte si skript např. relink.sh
#!/bin/bash
readlink $1 | grep '/media/hdc5/' > /dev/null && ln -s $1 `readlink $1 | sed 's/\/media\/hdc5\//\/home\/public\//' -`
#readlink $1 | grep '/media/hdc5/' > /dev/null && echo $1 `readlink $1 | sed 's/\/media\/hdc5\//\/home\/public\//' -`
Dejte mu právo spuštění a spusťte ho přes find:
chmod u+x relink.sh
find . -type l -exec ./relink.sh \{\} \;
Asi to jde nějak napsat jako inliner bez toho skriptu, ale to si můžete udělat za domácí úkol :-) To nahrazování cest si nejprve vyzkoušejte přes nějaké echo, skutečný ln naživo na to pusťte až si budete jistý, že to funguje správně.
5.3.2008 10:03 David Semančík
Rozbalit Rozbalit vše Re: Hromadná oprava softlinků
V linuxu jsem poměrně začátečník a budu se muset tím skriptem prokousat, abych ho úplně pochopil. Každopádně je tohle právě to, co mě na Linuxu fascinuje. Navíc se to pro můj případ hodí lépe než zmiňované
ln -s /home/public /media/hdc5
protože při přesunutí dat z hdc5 na /home/public došlo v některých případech i k drobným změnám v adresářové struktuře a po úpravě tohoto skriptu bych mohl opravit i linky vedoucí do těchto "nových" umístění.

Díky moc, večer vyzkouším a dám vědět.
5.3.2008 22:02 David Semančík
Rozbalit Rozbalit vše Re: Hromadná oprava softlinků
Odzkoušeno a vše funguje přesně podle mých představ. Ještě jednou děkuji. Jenom upozorním na drobnou chybku ve skriptu relink.sh (prohození parametrů ln) - správně má být:
readlink $1 | grep '/media/hdc5/' > /dev/null && ln -s `readlink $1 | sed 's/\/media\/hdc5\//\/home\/public\//' -` $1
6.3.2008 09:11 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Hromadná oprava softlinků
Odzkoušeno a vše funguje přesně podle mých představ.
Fakt? To mne samotného překvapuje :-)
prohození parametrů ln
S tím, který parametr ln je který jsem měl problémy vždycky. Ale poslední dobou už jsem si poměrně jistý, že první parametr je název existujícího souboru a druhý je název nově vytvořeného linku. I man ln mi dává za pravdu. Ale možná je problém v tom, jak jsem pochopil požadavek co kam se má nalinkovat. Hlavně, že vám to 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.