Используйте `cp -s --parents` для создания символических ссылок

330
Jyunhao Shih

cp -s --parents -t DEST_DIR /SRC/PATH1 /SRC/PATH2

Я использую приведенную выше команду для создания символических ссылок, ссылающихся на набор исходных путей, со всей структурой промежуточных каталогов исходных путей, воссозданных в этом каталоге назначения. (То есть, результатом будут DEST_DIR / SRC / PATH1 и DEST_DIR / SRC / PATH2, которые являются символическими ссылками, ссылающимися на / SRC / PATH1 и / SRC / PATH2 соответственно.)

Это работает довольно хорошо, за исключением случаев, когда хвостовая часть исходного пути является каталогом. В этом случае cp отказывается делать символическую ссылку. Он говорит, что я должен был добавить -rопцию, потому что источником является каталог. Однако копирование / создание ссылок на исходные тексты не является моей целью. Я просто хочу, чтобы этот исходный путь был символической ссылкой, независимо от того, файл это или каталог.

Я знаю, что могу достичь того, чего хочу, используя некоторые сценарии shell / python. Но я просто не могу не задаться вопросом, есть ли у cp другие варианты, которые бы отвечали моим потребностям.

0
Я посмотрел и не могу найти какие-либо опции (в Ubuntu 18.04), чтобы переопределить обработку по умолчанию, где исходный каталог интерпретируется как означающий его содержимое. К сожалению, альтернативная команда `ln -s` не имеет опции` --parents`, поэтому вы вынуждены использовать сценарии. Будет просто использовать `mkdir -p` и` ln -s` вместе для создания целевой ссылки. AFH 6 лет назад 0
@AFH Думаю, ты прав. Спасибо за помощь. Jyunhao Shih 6 лет назад 0

0 ответов на вопрос

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