zcat - Zcat for循环中的多个压缩文件
问题描述
我对 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
循环将在一个子shell中运行,并将在其中set -e
设置错误时停止选项,以便如果出现错误zcat
或错误,rm
它不会继续向前推进,破坏视线中的一切。
推荐阅读
- c++ - 为什么我的对象的属性是“无法读取内存”
- python - 虽然循环不退出
- python - 为什么我在 python 中的正方形绘图函数没有向下移动一行?
- c# - 如何在二维数组的特定行中找到最大数?
- database-design - 嵌套数据的关系模型
- python - 如何更改 tkinter 小部件的边框颜色?
- python-3.x - Bandit 问题 B108:hardcoded_tmp_directory 和 B102:exec_used
- ssl - Github 页面看不到 CNAME 或设置 SSL?
- php - 如何将自定义字段值分成单独的链接
- json - 如何从 JSON 响应中定义此变量?