Как массово заменить симлинк?

find /etc/nginx/bx -type l -name '*ks10.ks10.ru*' | sed -e 'p;s/ks10.ks10.ru/ks11.ks11.ru/g' | xargs -n2 mv

Работает переименование самого файла, но не линки в нем, соответственно нужно заменить и саму линку, как это сделать ?
5dc2b98c41158071378547.jpeg
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 2
hint000
@hint000
у админа три руки
find /etc/nginx/bx -type l -name '*ks10.ks10.ru*' | xargs ls -l | awk '{print $11, $9}' | sed -e 's/ks10.ks10.ru/ks11.ks11.ru/g' | xargs -n2 ln -s

При этом старые симлинки не удаляются, только создаются новые; но удалить старые вам будет не сложно.
И решение не универсальное - должно работать для симлинков с абсолютными путями, но не с относительными (там сложнее, надо парсить пути и отдельно учитывать в них две точки, в общем, мне лениво). Но у вас вроде пути абсолютные в симлинках.

Upd. сергей кузьмин в комментариях подсказал замечательную команду readlink, которая с опцией -f должна сразу выдать полный путь по симлинку, так что можно добиться универсальности без усложнения.
Ответ написан
Комментировать
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
man rename
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы