0

我对 bash 脚本相当陌生,我一直在 stackoverflow 中搜索一个与我正在寻找的答案相匹配但无法找到完全匹配的答案。如果这已经得到解答,我深表歉意。

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

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

zcat filename.gzip > filename

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

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

谢谢!

4

1 回答 1

0

解压缩所有gzip可以使用find,basenamewhile循环处理的文件:

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设置错误时停止选项,以便如果出现错误zcat或错误,rm它不会继续向前推进,破坏视线中的一切。

于 2018-09-18T03:40:55.367 回答