@refsurf

Скрипт массово создавать симлинки по маске?

Суть вопроса. Есть папки условно "a" "b" "c" "d" в папке a расположена папка "x" нужно создать на нее симлинк в папках "b" "c" "d" (условно, на самом деле папок 1кк)
Делаю на bash (сам гуманитарий)
#!/bin/bash
ln -s /var/www/a/x /var/www/b
ln -s /var/www/a/x /var/www/c
ln -s /var/www/a/x /var/www/d

Такой скрипт с миллионом строк это огроменнейший костыль. Возможно есть более короткое и простое решение. Кодить не умею вообще.

Там уже существует миллион папок. Имена разные без какой либо связи между собой.
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Поменяйте /file на предпочтительное имя

Потестировать (не применять)
find /var -maxdepth 1 -type d -exec echo ln -s /var/www/a/x {}/file \; |more


Выполнить
find /var -maxdepth 1 -type d -exec ln -s /var/www/a/x {}/file \;
Ответ написан
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
root_dir=/var/www
source_root=a
source_dir=x
for dir in $(find $root_dir -mindepth 1 -maxdepth 1 -type d | egrep -v "^root_dir/$source_root\$")
do
  ln -s "$root_dir/$source_root/$source_dir" "$dir/$source_dir"
done
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы