【发布时间】:2014-09-12 06:21:52
【问题描述】:
我希望获取我的 S3 存储桶上大于 200 KB 的所有文件。经过一番研究,我能够使用以下命令递归地生成我的 S3 存储桶中大于 200 KB 的所有文件的列表:
s3cmd ls -r s3://mybucket | awk '{if ($3 > 200000) print $4}' > files.txt
理想情况下,我不仅希望找到所有大于 200KB 的文件,而且还希望在同一命令中获取它们,而不是仅仅生成一个列表。
我正在寻找类似的东西,但它显然不正确。
s3cmd ls -r s3://mybucket | awk '{if ($3 > 200000) "s3cmd get $4" }'
参考:如果您不熟悉 s3cmd:$3 返回文件大小,$4 返回 s3cmd 返回的特定文件的文件名。
提前感谢您的帮助。
问题:
如何使用 awk 在另一个 bash 命令中调用另一个 bash 命令?
【问题讨论】:
-
awk 不是外壳。不要用嵌套调用层 (
shell { awk { system { shell { s3cmd } } } }) 来破坏你的代码,试图让它像一个一样,只需让 shell 调用 awk,然后像 @GlennJackman 显示的那样对其结果进行操作 (shell { awk | xargs s3cmd })。
标签: bash shell command-line awk s3cmd