Скопируйте файлы из Column1 в CSV в имя целевой папки в Column2 в CSV (Linux)

320
Alex L. Mermelstein

У меня есть 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/ 
0
Это очень похоже на [ваш другой вопрос] (http://superuser.com/questions/1180074/how-to-move-files-to-specific-folders-based-on-csv-entries/1180210), нет? Я имею в виду, я думаю, что это «копировать», а не «двигаться», но все же. bertieb 7 лет назад 0
Это система Windows или сценарий может встретиться с редактором на основе Windows? Stephen Rauch 7 лет назад 0

2 ответа на вопрос

0
Stephen Rauch

Вы должны убедиться, что каталог существует, прежде чем пытаться скопировать в него:

#!/usr/bin/env bash IFS=',' while read OS HS do mkdir -p $HS cp -av $OS $HS done < SlingManifest.csv 
0
Alex L. Mermelstein

Я понял это. Я использовал цикл for для создания текстовых файлов для каждой подпапки, затем я использовал новый вложенный цикл for для копирования содержимого текстового файла в соответствующую папку. Работал.

Похожие вопросы