Gunzip 多个文件并重命名它们

Gunzip 多个文件并重命名它们

我想知道是否可以gunzip使用一个命令/脚本对多个文件进行重命名。

我有一堆格式为以下的文件:

test.20120708191601.DAT.3599502593.gz
test.20120708201601.DAT.99932140.gz
test.20120708204600.DAT.1184686967.gz
test.20120708212100.DAT.824089664.gz
test.20120708215100.DAT.1286044098.gz
test.20120708222100.DAT.1414234861.gz

我需要gunzip它们并删除 , 之后的所有内容.DAT,格式如下:

test.20120708191601.DAT
test.20120708201601.DAT
test.20120708204600.DAT
test.20120708212100.DAT
test.20120708215100.DAT
test.20120708222100.DAT

答案1

尝试这个:

for file in *.gz; do
  gunzip -c "$file" > "${file/.DAT*/.DAT}"
done

该方法使用gunzip的选项将未压缩的流输出到标准输出 ( -c),因此我们可以将其重定向到另一个文件,而无需第二次重命名调用。重命名是在文件名变量本身上完成的,使用bash替换(匹配任何通配模式.DAT*并将其替换为.DAT)。循环本身只是迭代当前目录中名称以.gz.

相关内容