我有一个每月的存档,每天有一个新文件添加到存档中。有时我必须解压缩最后添加的文件。文件名是随机的,所以我不知道文件名是什么。我用这个过程。
第1步解压缩-l /path/to/archive/dec2020.zip给我列出了归档文件列表,我记下了最后一个添加的文件。Latest_file.dat
第2步解压缩/path/to/archive/dec2020.zip Latest_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 }')
$()扩展第一个命令,并在第二个命令中使用扩展。我们按日期顺序列出存档条目,并使用尾部,头部和排序来获取所需的行。然后,我们使用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外壳?
是的,非常确定。