【问题标题】:How to extract last file added to an zip archive如何提取添加到 zip 存档的最后一个文件
【发布时间】:2021-03-14 16:04:07
【问题描述】:

我有一个每月存档,每天都有一个新文件添加到存档中。有时我必须提取最后添加的文件。文件名是随机的,所以我不知道文件名是什么。我使用这个过程。

第 1 步 解压缩 -l /path/to/archive/dec2020.zip 给我存档中的文件列表,我写下最后一个添加的文件,即。 latest_file.dat

第 2 步 解压缩 /path/to/archive/dec2020.zip latest_file.dat 然后我从存档中提取该文件。

我想做的是在一个命令中执行此操作,基本上我想在 Linux 机器上的一个命令中提取添加到存档中的最后一个文件。

【问题讨论】:

    标签: linux archive unzip


    【解决方案1】:

    试试这个:

    unzip /path/to/archive/dec2020.zip $(unzip -l /path/to/archive/dec2020.zip | sort -k2 | tail -5 | head -1 | awk '{ print $4 }')
    

    $() 扩展第一个命令并使用第二个命令的扩展。我们按日期顺序列出归档条目,并使用尾部、头部和排序来获取所需的行。然后我们使用 awk 打印出文件路径(第 4 个空格分隔的字段)

    或者,这可以通过 awk 系统函数来执行解压缩。

     unzip -l /path/to/archive/dec2020.zip | sort -k2 | tail -5 | head -1 | awk '{ system("unzip /path/to/archive/dec2020.zip "$4) }'
    

    【讨论】:

    • 尝试这个我运行了这个命令unzip -l /path/to/archive/dec2020.zip | sort -k2 | tail -5 | head -1 | awk '{ print $4 }',它确实返回了正确的文件名。但是,当我运行整个命令 unzip /path/to/archive/dec2020.zip $(unzip -l /path/to/archive/dec2020.zip | sort -k2 | tail -5 | head -1 | awk '{ print $4 }') 时,它会提取存档中的所有文件。
    • 抱歉想知道如何发表评论。
    • 你在使用 bash shell 吗?
    • 好的。试试我刚刚发布的替代方案。
    • 那行得通。非常感谢拉曼。你还教了我一些东西,所以今天过得很愉快。
    猜你喜欢
    • 2011-09-07
    • 1970-01-01
    • 2014-04-15
    • 2018-03-02
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多