Bash
獲取特定數量之後的文件夾列表
我有一個文件夾,其子文件夾命名約定類似於
yyyymm
例如 200801、200803 等。我想通過命令行方式列出 201412 之後的文件夾以上傳到 S3。有沒有辦法做到這一點?
列出目錄內容,管道輸出到 awk,僅列印那些值大於或等於所需日期的值,管道到 xargs s3。
ls | awk '$1 >= 201412 {print $1}' | xargs -n1 YOUR_S3_COPY_COMMAND -options
如果目錄和文件很多,可以使用 -P 並發程序數並行化 xargs。
ls | awk '$1 >= 201412 {print $1}' | xargs -n1 -P20 YOUR_S3_COPY_COMMAND -options
您目前的要求是列出ie或之後的子目錄名稱。
201412``201501
這些目錄將匹配模式
201[5-9]*
。要同時處理 2019 年之後(直到 2099 年)的名稱,請使用
201[5-9]* 20[2-9]*
.列出它們:
shopt -s nullglob # to allow non-matching globs to expand to nothing printf '%s\n' somedir/201[5-9]*/ somedir/20[2-9]*/
where
somedir
是保存子目錄的目錄。對這些中的每一個做一些事情:
shopt -s nullglob for dir in somedir/201[5-9]*/ somedir/20[2-9]*/; do aws s3 cp "$dir" ... done
注意:我從未使用過 S3,所以我不知道用於上傳文件目錄的正確命令。