Bash解压缩文件并在名称中添加时间戳

时间:2016-10-28 08:49:18

标签: bash unzip

我有拉链结构

temp.zip

- file.csv
- readme.txt
- license.txt

如何解压缩temp.zip,在名称中添加时间戳, 结果:

file.142345687.csv
readme.142345687.txt
license.142345687.txt

2 个答案:

答案 0 :(得分:2)

使用-l选项列出文件,然后使用-p选项逐个提取它们:

unzip -l -q -q temp.zip | awk '{print $NF}' | while read file
do
  unzip -p temp.zip "${file}" > "${file%.*}.$(date +%s).${file##*.}"
done

,其中

  • -q -q选项要求静默输出(在易于解析的列中);
  • awk的{​​{1}}指向最后一栏;
  • $NF从文件名后面删除${file%.*}的最短匹配项;
  • .*从文件名前面删除${file##*.}的最长匹配项;
  • *.输出自1970-01-01 00:00:00 UTC
  • 以来的秒数

答案 1 :(得分:0)

你可以尝试这样的事情;

#!/bin/bash
unzip temp.zip
for n in $(unzip -Z -1 "temp.zip"); do 
  e=${n#*.}
  fn="${n%.*}"
  DATE=`date +%s`
  newFileName="$filename.$DATE.$e"
  mv "$n" "$newFileName"
done