Я пытаюсь создать символическую ссылку (мягкую ссылку) из результатов команды поиска. Я использую sed для удаления ./ перед именем файла. Я делаю это, чтобы вставить имя файла в конец пути, где будет сохранена ссылка. Я работаю над этим с Ubuntu Server 8.04.
Я узнал из этого поста, который является своего рода решением моей проблемы, но не совсем
Как мне выборочно создавать символические ссылки на определенные файлы в другом каталоге в LINUX?
Однако получившееся имя файла не сработало, поэтому я начал изучать awk, а затем остановился на sed.
Для этого я использую однострочный цикл. Проблема в том, что структура цикла разделяет имя файла, создавая ссылку для каждого слова в имени файла. Существует довольно много файлов, и я хотел бы автоматизировать процесс, чтобы каждая ссылка использовала имя файла, с которым она связана.
Я хорошо разбираюсь в основных командах bash, но я далек от того, чтобы быть экспертом в командной строке. Я начал это с ls и awk и перешел к find и sed. Мой синтаксис sed, вероятно, мог бы быть лучше, но я изучил это за два дня, и сейчас я как бы застрял.
для t в find -type f -name "*txt*" | sed -e 's/.//' -e 's$/$$'; do echo ln -s $t ../folder2/$t;
сделано
Любая помощь или подсказки больш были бы оценены. Спасибо.
./
в выводеfind
, передав список путей.find */ -options ...
Я думаю, что это тоже может быть вариантом. - person tripleee   schedule 27.11.2012find source -options ... -exec ln -s '{}' target \;
), используйте абсолютные пути или расширьте свой сценарийsed
, чтобы разрешить цель ссылки относительно места назначения (тривиально добавьте../source/
впереди). Первый аргументln -s
никак не переписывается, он используется дословно как содержимое символической ссылки, нет требования или проверки, что он разрешается в существующий файл во время создания ссылки. - person tripleee   schedule 27.11.2012sed 's%^\./%%'
. Чтобы разрешить косую черту в регулярном выражении,sed
позволяет вам использовать любой знак препинания после командыs
, хотя косая черта является традиционным разделителем по умолчанию, имитируя символ поиска вvi
иed
перед ним. В качестве альтернативы вы можете экранировать разделитель обратной косой чертой, чтобы указать его как буквальный символ в выражении. - person tripleee   schedule 27.11.2012