Linux 如何提取添加到zip存档的最后一个文件

Linux 如何提取添加到zip存档的最后一个文件,linux,archive,unzip,Linux,Archive,Unzip,我有一个每月存档,每天都有一个新文件添加到存档中。有时我不得不提取最后添加的文件。文件名是随机的,所以我不知道文件名是什么。我使用这个过程 第一步 解压-l/path/to/archive/dec2020.zip 给我档案中的文件列表,我写下最后一个添加的文件,即:latest_file.dat 步骤2 解压/path/to/archive/dec2020.zip最新_file.dat 然后我从存档中提取该文件 我想用一个命令完成这项工作,基本上我想在Linux机器上用一个命令提取添加到存档中的

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

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

步骤2 解压/path/to/archive/dec2020.zip最新_file.dat 然后我从存档中提取该文件

我想用一个命令完成这项工作,基本上我想在Linux机器上用一个命令提取添加到存档中的最后一个文件。

试试这个:

unzip /path/to/archive/dec2020.zip $(unzip -l /path/to/archive/dec2020.zip | sort -k2 | tail -5 | head -1 | awk '{ print $4 }')
$()展开第一个命令,并在第二个命令中使用展开。我们按日期顺序列出归档条目,并使用tail、head和sort获得所需的行。然后使用awk打印文件路径(第四个空格分隔的字段)

或者,可以使用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吗?是的,非常确定。