Вы должны убедиться, что каталог существует, прежде чем пытаться скопировать в него:
#!/usr/bin/env bash IFS=',' while read OS HS do mkdir -p $HS cp -av $OS $HS done < SlingManifest.csv
У меня есть CSV с двумя столбцами. В столбце 1 указаны полные имена файлов. Второй столбец - это имена папок. Мне нужно скопировать файл в столбце 1 в папку в столбце 2. И файлы, и папки находятся в одном и том же главном каталоге. У меня есть следующий скрипт:
IFS=',' while read OS HS do cp -av $OS $HS done < SlingManifest.csv
Это говорит о том, что это работает, но когда я проверяю папку, я получаю файл без имени. Содержимое файла правильное, но у файла нет имени, и в каждой папке существует только один файл. Как я могу предотвратить это?
Образец vim из CSV:
TinyHouseNation_600SqFtPowercouplesRetreat_190473_SLING.xml,./2_25_17/ BuyingTheView_RuralCasaNiagara_192555_SLING.xml,./2_26_17/ BuyingTheView_SexyHideAwayToronto_192546_SLING.xml,./2_26_17/ LifetimeOriginalMovie_LoveByThe10thDate_188563_SLING.xml,./2_27_17/ Special_10thDateGirlsNightIn_196744_SLING.xml,./2_27_17/ Special_SniperInsideTheCrosshairs_49112_SLING.xml,./2_27_17/
Вы должны убедиться, что каталог существует, прежде чем пытаться скопировать в него:
#!/usr/bin/env bash IFS=',' while read OS HS do mkdir -p $HS cp -av $OS $HS done < SlingManifest.csv
Я понял это. Я использовал цикл for для создания текстовых файлов для каждой подпапки, затем я использовал новый вложенный цикл for для копирования содержимого текстового файла в соответствующую папку. Работал.