Я пытаюсь создать около 100 000 символических ссылок. Расположение ссылки находится в папке, которую я хочу определить одновременно с созданием ссылки.

Например

ln -s File1 FolderA/File1

Как только я выясню, возможно ли это, я хотел бы просто использовать цикл для создания всех ссылок. Я не смог найти способ сделать это (извините, если это тривиально).

0
ZakS 15 Мар 2020 в 22:00
Вы пытаетесь сделать mkdir -p FolderA/File1 && ln -s -T File1 FolderA/File1 для каждого в наборе каталогов.
 – 
ctrl-alt-delor
15 Мар 2020 в 22:04
Я не уверен, что делает -T, но FolderA/File1 просто укажет на исходный File1. И FolderA не существует на момент запуска команды.
 – 
ZakS
15 Мар 2020 в 22:06
Да, File one не будет указывать на правильный File1, но если мы исправим этот бит. Это то, что вы хотите сделать?
 – 
ctrl-alt-delor
15 Мар 2020 в 22:07
Да, я думаю, что то, что вы описываете, является моей целью
 – 
ZakS
15 Мар 2020 в 22:11

1 ответ

Что-то вроде этого:

#!/bin/bash
set -e
original_dir="$(pwd)"
mkdir -p FolderA
cd FolderA
for file in "${original_dir}"/*
do
  ln -s -t . "$file"
done

Не испытано

1
ctrl-alt-delor 16 Мар 2020 в 15:52
Используйте for вместо foreach при использовании bash или sh
 – 
GMaster
16 Мар 2020 в 00:48
Извини, я виноват. Было бы нормально, если бы вы это исправили.
 – 
ctrl-alt-delor
16 Мар 2020 в 15:52