Скажем, у меня есть следующая команда, которая создает символический ссылка из одного файла в другой, давая ссылке то же имя без расширения.
sudo ln -s ~/foobar/abc.sh ~/fubar/abc
Как я могу сделать то же самое, но для ~ / foobar / *. Sh
?
Переименование файлов и, в вашем случае, создание символических ссылок, mmv
будет достаточно.
mmv -s '~/foobar/*.sh' '~/fubar/#1'
-s
Чтобы результирующая ссылка возвращалась к источнику, либо имя источника должно начинаться с '/', либо цель должна находиться либо в текущем, либо в исходном каталоге. Если ни одно из этих условий не выполняется, ссылка отклоняется. Однако источник и цель могут находиться на разных устройствах, а источником может быть каталог. for fn in ~/foobar/*.sh ; do
sudo ln -s $fn ~/fubar/`basename $fn .sh`
done
Предполагается, что ни в одном из файлов * .sh
нет пробелов в имени файла. Если это так, вам нужно указать оба аргумента команды ln -s
:
for fn in ~/foobar/*.sh ; do
sudo ln -s "$fn" "~/fubar/`basename $fn .sh`"
done