Zcat for循环中的多个压缩文件

时间:2018-09-18 03:27:43

标签: zcat

我对bash脚本还很陌生,我一直在这里用stackoverflow搜索一个答案,该答案将与我正在寻找的内容相匹配,但找不到确切的匹配结果。

我有多个包含多个压缩文件的文件夹,有些是gzip扩展名,有些没有扩展名。

我能够查看压缩文件内容的唯一方法是进行

zcat filename.gzip > filename

我的目标是创建一个for循环:

  1. zcat所有文件并将其输出到新文件并在末尾添加一个标识符,类似于“ -read”
  2. 删除压缩文件

谢谢!

1 个答案:

答案 0 :(得分:0)

要解压缩gzip将使用findbasenamewhile循环处理的所有文件:

find . -type f | while read f; do
    set -e # You should probably always script with set -e
           # This will cause the subshell to stop on errors.
    zcat < "$f" > "$f-new" || continue
    rm "$f"
done

这也应该处理出现的任何奇怪的报价。 while循环将在子shell中运行,而set -e将在其中设置错误停止选项,以便如果zcatrm出现错误,不会继续努力,摧毁视线中的一切。