【问题标题】:Using S3cmd, how do I get the first and last file in a folder?使用 S3cmd,如何获取文件夹中的第一个和最后一个文件?
【发布时间】:2014-07-03 03:45:29
【问题描述】:

我正在对 Hive 进行一些处理。通常,此过程的结果是一个文件夹(在 S3 上),其中包含多个文件(按顺序以一些随机字母和数字命名),我可以将它们“分类”在一起。

但对于报告,我只需要文件夹中的第一个和最后一个文件。现在,如果文件数以百计,我可以简单地通过 web-gui 下载。

但如果它是数千个,向下滚动是一种痛苦。更不用说,亚马逊会在需要时动态加载内容,而不是全部显示。

我试过s3cmd get,但我的经验充其量只是基本的。我最终下载了整个文件夹的内容。

据我所知,可以通过管道输入额外的命令,但我不知道该怎么做。

那么,如何使用s3cmd get 只下载特定文件夹中的last 文件?

谢谢。

【问题讨论】:

    标签: s3cmd


    【解决方案1】:

    我猜这个命令应该对你有用,

    s3cmd get $(s3cmd ls s3://bucket_name/folder_name/ | tail -1 | awk '{ print $4 }')
    

    tail -1 将选择文件夹列表中的最后一行,awk '{ print $4 }' 将选择文件名(第四个字段)。

    对于第一个文件,只需将 tail -1 替换为 head -1

    【讨论】:

    • 这将向 S3 发出两个请求以检索相同的文件列表,如果文件数以千计,这可能需要很长时间。您可以使用单个 awk 脚本获取第一行和最后一行:s3cmd ls s3://bucket_name/folder_name/ | awk 'NR == 1 { print $4 }END{ print $4 }' | xargs s3cmd get
    猜你喜欢
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多