Nic*_*son 7 compression gzip files
我所拥有的文件数量庞大的具有扩展喜欢.0_1234
.0_4213
和.0_4132
等有些是gzip
压缩的,有些是原始邮件。我需要确定哪些是压缩文件,解压缩这些文件,并在解压缩所有压缩文件后将所有文件重命名为通用扩展名。我发现我可以使用 file 命令来确定哪些被压缩,然后 grep 结果并使用sed
将输出缩减为文件列表,但无法确定如何解压缩看似随机的扩展名。这是我到目前为止所拥有的
file *|grep gzip| sed -e 's/: .*$//g'
Run Code Online (Sandbox Code Playgroud)
我想使用xargs
或某些东西来获取输出中提供的文件列表,并将它们重命名为.gz
以便解压缩,或者只是直接解压缩它们。
不要使用gzip
,zcat
而是使用不需要扩展名的。你可以一次性完成整个事情。只需尝试zcat
该文件,如果由于未压缩cat
而失败,则改为:
for f in *; do
( zcat "$f" || cat "$f" ) > temp &&
mv temp "$f".ext &&
rm "$f"
done
Run Code Online (Sandbox Code Playgroud)
上面的脚本将首先尝试zcat
将文件插入temp
,如果失败(如果文件不是 gzip 格式),它将只是cat
它。这是在子 shell 中运行以捕获运行的任何命令的输出并将其重定向到临时文件 ( temp
)。然后,将temp
重命名为原始文件名加上扩展名(.ext
在本例中)并删除原始文件。