2016-09-19 32 views
1

我有一個文本文件(testing.txt),其中每行是我想要上傳到S3的文件的路徑。aws s3 cp循環通過文件中的行

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

有沒有在你的文件名空間?如果是這樣,用$引述包圍$行。 – jbird

+0

首先,你應該測試你的'cp'命令,運行它爲一個單獨的文件'aws s3 cp complete_path_to_my_file_as_from_testing.txt_file s3:// mybucket /'並確保它可以上傳 - 在這種情況下,如果這是一個空間問題,aws會將第一部分作爲'aws cp'命令的參數,並且會抱怨參數不正確,儘管它用引號括起來是一種很好的做法。 –

+0

我的文件名中沒有空格,但感謝您的建議。 @FrédéricHenri我一直在使用cp命令來處理單個文件,沒有任何問題。我寫的東西看起來應該如何工作?至少如果我知道我在正確的道路上,那麼值得更多的關注。 – chrysm

回答

0

看起來你沒有在你應該在的位置運行命令。 如果您不在正確的目錄中,那麼您應該在文件中提供絕對路徑,以便在搜索文件時不存在bash問題。

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