Создайте много Symlinks с pwd и регулярными выражениями и пробелом в пути

Я пытаюсь создать скрипт, чтобы файлы с одинаковым расширением оставались в папке отдельно от остальных. В частности, я хочу сценарий, который, выполняемый в папке, создает программные ссылки для всех файлов.tex и помещает их в подпапку "исходники".

я знаю это ln хорошо справляется с регулярными выражениями и $PWD или же $(pwd) возвращает путь к текущей папке. Поэтому я попытался выполнить

ln -s $PWD/*.tex ./sources/

в моей папке, но вскоре я понял, что в моем пути была папка с пробелами в ней, что ln читает как несколько файлов. Итак, я попробовал с

ln -s '$PWD'/*.tex ./sources/

а также

ln -s '$PWD/*.tex' ./sources/

но в обоих случаях скрипт выдает один файл с именем *.tex в моем sources папка. После некоторого поста я попытался изменить пробелы в пути, как эти

ln -s $(printf "%q\n" "$PWD")/*.tex sources/

ln -s '$(printf "%q\n" "$PWD")'/*.tex sources/

ln -s '$(printf "%q\n" "$PWD")/*.tex' sources/

но вывод был одинаковым (с разницей в дополнительный символ \).

Помогите?

1 ответ

Ваша первая попытка должна сработать. Не так ли? Что он делает вместо этого?

* заменяет все совпадающие имена файлов, но впоследствии не выполняет разбиение по внутренним пробелам.

"Я знаю, что ln хорошо справляется с регулярными выражениями" - это неправильно. Во-первых, здесь вы видите шаблоны оболочки, а не регулярные выражения. Во-вторых, это не ln справиться с ними, но ваша оболочка (как правило, bash) до запуска ln или любая другая команда.

Другие вопросы по тегам