Bash

獲取特定數量之後的文件夾列表

  • March 28, 2019

我有一個文件夾,其子文件夾命名約定類似於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]*/

wheresomedir是保存子目錄的目錄。

對這些中的每一個做一些事情:

shopt -s nullglob
for dir in somedir/201[5-9]*/ somedir/20[2-9]*/; do
  aws s3 cp "$dir" ...
done

注意:我從未使用過 S3,所以我不知道用於上傳文件目錄的正確命令。

引用自:https://unix.stackexchange.com/questions/508652