Я порівняно новачок у баші і у мене виникають певні проблеми зі сценарієм, який я намагаюся написати. Провівши останню годину або близько того досліджуючи та спробувавши нові методи, я все ще не можу зробити те, що хотілося б.
Моя мета така: у мене папка, в /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. Навіть якщо він буде належним чином уникнути, коли його помістити в змінну, він розшириться на кілька слів, коли ви будете використовувати його без цитування.