I'm having trouble using * in the AWS CLI to select a subset of files from a certain bucket.
Adding * to the path like this does not seem to work:
aws s3 cp s3://data/2016-08* .
I'm having trouble using * in the AWS CLI to select a subset of files from a certain bucket.
Adding * to the path like this does not seem to work:
aws s3 cp s3://data/2016-08* .
 
    
     
    
    To download multiple files from an Amazon AWS bucket to your current directory, you can use the recursive, exclude, and include flags. The order of the parameters matters.
Example command:
aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"
For more information on how to use these filters: Use of Exclude and Include Filters
 
    
     
    
    The Order of the Parameters Matters
The exclude and include should be used in a specific order, We have to first exclude and then include. The vice versa of it will not be successful.
aws s3 cp s3://data/ . --recursive  --include "2016-08*" --exclude "*"
This will fail because order of the parameters maters in this case. The include is excluded by the *.
aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"`
This one will work because then we excluded everything, but later we had included the specific directory.
 
    
     
    
    Okay I have to say the example is wrong and should be corrected as follows:
aws s3 cp . s3://data/ --recursive --exclude "*" --include "2006-08*" --exclude "*/*"
The . needs to be right after the cp. The final --exclude is to make sure that nothing is picked up from any subdirectories that are picked up by the --recursive (learned that one by mistake...)
This will work for anyone struggling with this by the time they got here.
 
    
     
    
    If there is an error while using ‘ * ’ you can also use recursive, include, and exclude flags like
aws s3 cp s3://myfiles/ . --recursive --exclude "*" --include "file*"
 
    
    