Я порівняно новачок у баші і у мене виникають певні проблеми зі сценарієм, який я намагаюся написати. Провівши останню годину або близько того досліджуючи та спробувавши нові методи, я все ще не можу зробити те, що хотілося б.
Моя мета така: у мене папка, в /Volumes/Server\ RAID/Photos
якій я зберігаю всі свої фотографії. Кожна папка має титул, YYYY-MM FolderName
де іноді є пробіли FolderName
. У цих папках три папки: Raw
, Edited
і Final
. Моя мета - за допомогою одного сценарію bash створити символічні посилання на моєму робочому столі для кожної Final
папки І перейменувати її у свою батьківську папку. Приклад: Я хотів би /Volumes/Server\ RAID/Photos/2016-10\ Fleet\ Week/Final
мати символічне посилання на імені Desktop 2016-10 Fleet Week
.
Я спробував багато різних різновидів коду, який я розмістив нижче, але код, який я включив, був самим стислим кодом (хоча він не працював).
Опис коду:
- CD на робочий стіл, щоб там створювались посилання
- використовувати для циклу циклу через папки
- створити symlink - ось проблема: мені потрібно якось включити ім'я папки в шлях до файлу, але також додати
\
перед пробілами, щоб команда не вийшла з ладу. З цього часу я отримую повідомлення про помилки, кажучи про те, що немає місця,RAID/Photos
яке називається, що змушує мене думати, що сценарій спотикається на першому просторі, навіть із зворотною косою рисою. Змініть ім'я
Final
символьного посилання на ім'я папки. (Я припускав, що тут мені не потрібні повні каталоги, тому що я вже в Desktopcd Desktop for f in /Volumes/Server\ RAID/Photos; do ln -s /Volumes/Server\ RAID/Photos/"$f"/Final mv Final $f done
ЗАПИТАННЯ: Може хтось, будь ласка, допоможе мені очистити цей сценарій? (Я в основному стосується частини третьої, але я б і не сказав "ні", щоб допомогти з рештою).
$f
в команді mv. Навіть якщо він буде належним чином уникнути, коли його помістити в змінну, він розшириться на кілька слів, коли ви будете використовувати його без цитування.