Создайте много 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
или любая другая команда.