我想知道是否可以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
.