Bash脚本或python脚本解压缩文件并从提取的文件中提供当前日期的文件名?

时间:2017-11-04 11:43:18

标签: bash

我需要一个bash脚本来获取当前日期的文件名,例如ex-20171104.1

  1. 将最新文件解压缩到目录中。
  2. 从提取的文件列表中提取当前日期生成的文件名。
  3. Zip包含两个文件:20171031.1和20171104.1。我只需要显示20171104.1。
  4. enter image description here

2 个答案:

答案 0 :(得分:1)

据我所知,你有一个zip文件 abc.zip ,你想从中提取最新的文件。如果我错了,请发表评论,我会相应地对其进行排序,如果我没有错,这个脚本将对你有用:

a="$(date -d $(date -I) +%Y%m%d)"
b="$(unzip -l abc.zip)"
c="$(echo "$b" | grep "$a")"

unzip -j abc.zip $c 2> /dev/null

在这个脚本中,首先我们将当前日期格式化为YYYYMMDD而不使用破折号或斜杠。然后我们列出其中的内容,通过正则表达式,我们匹配文件的修改日期,如果它匹配我们当前的日期,它将为我们抛出文件。要获取文件名,这是字符串输出的最后一个单词,我们使用 awk ,最后解压缩我们想要的文件而不是其中的所有文件。

答案 1 :(得分:0)

简单的一行

unzip -j abc.zip $(unzip -l abc.zip | grep -o "$(date +%Y%m%d).*")

示例输出

$ unzip -l abc.zip 
Archive:  abc.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2017-11-06 11:10   20171102.1
        0  2017-11-06 11:10   20171104.3
        0  2017-11-06 11:09   20171106.1
        0  2017-11-06 11:10   20171106.2
---------                     -------
        0                     4 files
$ unzip -j abc.zip $(unzip -l abc.zip | grep -o "$(date +%Y%m%d).*")
Archive:  abc.zip
 extracting: 20171106.1              
 extracting: 20171106.2              
$