Bash скрипт для чтения .csv файла для создания / перемещения контента - PullRequest
1 голос
/ 30 сентября 2019

У меня есть папка, содержащая тысячи изображений (abc.jpg, 6_08.jpg, беженец_awareness_workshop_by_british_red_cross.jpg и т. Д.) И файл csv, который содержит столбец A, идентификационный номер (1036, 10028 и т. Д.) И столбец B с именами файлов изображений.

Использование Automator для Mac Я собираюсь открыть файл поиска (.csv), затем запустить скрипт bash, который создаст папку для каждого идентификатора, и переместить соответствующее изображение в эту папку. В папке может быть несколько изображений.

Мой bash-скрипт на данный момент выглядит так:

cd "${1%/*}"

while read line         

do         

     FolderName=${line%,*}

     ImageName=${line#*,}

     mkdir "$FolderName"

     mv "$ImageName" "$FolderName"

done < "$1"

Кажется, что все папки создаются нормально, но затем возвращает эту ошибку:

mv: переименуйте abc.jpg \ r в 1030 / abc.jpg \ r: Нет такого файла или каталога

И скриншот моего CSV выглядит следующим образом:

enter image description here

Есть мысли?

1 Ответ

0 голосов
/ 30 сентября 2019

Вы можете удалить посторонние возвраты каретки из ImageName с помощью:

ImageName=$(tr -d '\r' <<< "$ImageName")

Вы также можете заменить:

mkdir "$FolderName"

на:

mkdir -p "$FolderName"

потому что он не будет выдавать ошибки при вызове с именем каталога, которое уже существует - как вы говорите, у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...