2016-09-19 4 views
1

У меня есть текстовый файл (test.txt), где каждая строка - это путь к файлу, который я хотел бы загрузить на S3.aws s3 cp loop through lines в файле

testing.txt

homework.txt 
Documents/Data/file1.txt 
Photos/picture.jpg 

Я попытался это:

while read line 
do 
    aws s3 cp $line s3://mybucket/ 
done < testing.txt 

, но я получаю эту ошибку:

does not exist.d path homework.txt 
does not exist.d path Documents/Data/file1.txt 
does not exist.d path Photos/picture.jpg 

Я довольно новыми для этого так Извинения, если Я что-то упускаю или, может быть, эта ошибка характерна для моей ситуации. Я не совсем уверен, что это должно даже работать, поэтому указывать мне в любом полезном направлении очень ценится!

+0

Существуют пробелы в ваших именах файлов? Если это так, объедините $ line с кавычками. – jbird

+0

сначала вы должны протестировать команду 'cp', запустите ее для отдельного файла' aws s3 cp complete_path_to_my_file_as_from_testing.txt_file s3: // mybucket/'и убедитесь, что он может загрузить - @jbird в этом случае, если это проблема с пространством , aws возьмет первую часть как аргумент команды 'aws cp' и будет жаловаться на аргументы, но правильная практика заключается в том, чтобы окружать кавычками. –

+0

В моих именах нет пробелов, но спасибо за предложение. @ FrédéricHenri Я использую команду cp для отдельных файлов без проблем. Делает то, что я написал, похоже, ДОЛЖЕН работать? По крайней мере, если я знаю, что я на правильном пути, стоит заглянуть в больше. – chrysm

ответ

0

Похоже, вы не выполняете команду, в которой вы должны. Если вы не находитесь в правильном каталоге, вы должны указать абсолютные пути в файле, чтобы не было проблем для поиска в файлах.

0

Вы можете сделать это, например:

cd ~/path/to/base-dir # This is where files are. 

for f in $(cat ~/path/to/testing.txt); \ 
do echo "Now moving file $f"; \ 
aws s3 cp $f s3://mybucket/; \ 
done