1

У меня есть около 40 символических ссылок в каталоге, которые выглядят так:

lrwxr-xr-x    1 anna  staff    45B 22 Jun 11:20 menu-bg-left.jpg -> ../../../../../hg/www/images/menu-bg-left.jpg
lrwxr-xr-x    1 anna  staff    46B 22 Jun 11:20 menu-bg-right.jpg -> ../../../../../hg/www/images/menu-bg-right.jpg

Я хотел бы изменить их все в другой каталог:

lrwxr-xr-x    1 anna  staff    45B 22 Jun 11:20 menu-bg-left.jpg -> ../../../../../code-local/www/images/menu-bg-left.jpg
lrwxr-xr-x    1 anna  staff    46B 22 Jun 11:20 menu-bg-right.jpg -> ../../../../../code-local/www/images/menu-bg-right.jpg

По разным причинам я не могу просто символически связать каталог hg каталогом code-local , мне нужно изменить сами ссылки.

Можно ли это как-то обработать?

2 ответа2

2

Вы переключаете dir в каталог, в котором вы хотите разместить ваши ссылки. Затем вы читаете все ваши изображения из исходного каталога в цикле for. При каждом запуске цикла создается символическая ссылка.

#!/bin/bash
for file in /to/directory/where/symlinks/should/be/*
do
   rm $file
   ln -s /where/your/image/files/are/$(basename $file) $file
done
0

Вы можете использовать комбинацию readlink и shell, что-то вроде:

#!/bin/sh
cd /to/directory/where/symlinks/should/be
for i in * ; do
    if [ -h $i ]; then
        NEWTARGET=`readlink $i | sed 's,old/path/to/files,new/path/to/files,'`
        rm -f $i
        ln -s $NEWTARGET $i
    fi
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .