我对bash脚本相当陌生,我一直在stackoverflow中寻找与我正在寻找的答案相匹配的答案,但找不到完全匹配的答案..如果已经回答了,请道歉。
我有多个文件夹,其中包含多个压缩文件,有些是gzip扩展名,有些没有扩展名。
我能够看到压缩文件内容的唯一方法是通过
zcat filename.gzip > filename
我的目标是创建一个 for 循环,它将:
- zcat 所有文件并将其输出到新文件并在末尾添加一个标识符,类似于"-read">
- 删除压缩文件
谢谢!
要解压缩gzip
使用find
、basename
和while
循环处理的所有文件:
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
循环将在子外壳中运行,set -e
将在其中设置错误时停止选项,这样如果zcat
或rm
出现错误,它就不会继续前进摧毁眼前的一切。