shell - 如何使此命令从父目录 zip files/test.zip $(tar tf files/test.gz) 工作
问题描述
我有这个命令:
zip files/test.zip $(tar tf files/test.gz)
但它不起作用,因为 $(tar tf files/test.gz) 中的所有内容都在 files/ 中,所以 zip 找不到它。如果我将目录更改为文件并执行此文件,它会完美运行:
zip test.zip $(tar tf test.gz)
但我需要让它从父目录工作。
我的完整命令是:
tar xzf files/test.tar.gz && zip files/test.zip $(tar tf files/test.tar.gz) && rm -r -- $(tar tf files/test.tar.gz)
从Linux 上是否有任何命令可以将 .tar.gz 文件转换为 .zip?
谢谢
解决方案
我会为此制作一个小脚本。如果你有很多 tgz 文件要处理,你可以在它上面应用一个循环。
#!/bin/bash
TMP=/a/tmp/directory
TARGET=/dir/to/your/files
mkdir -p $TMP
cd $TMP
tar -C $TMP -xzf $TARGET/your.tar.gz && zip $TARGET/your.zip *
rm -rf $TMP
推荐阅读
- java - Hibernate 在更新子实体时不会更新子实体
- spring - Spring security:使用 formLogin 配置 JWT
- python - 熊猫:每周到每天,但不关闭
- c# - 将多行项目动态添加到功能区菜单c#
- amazon-web-services - AWS Quicksight 计算提交的错误 - 部门操作员未按预期工作
- python-3.x - 使用 cdk 为 lambda 添加多个安全组
- mysql - 在插入之前触发 MySQL 更新属性
- aws-cdk - AWS CDK - 尝试使用类 aws_cdk.aws_events.RuleTargetInputProperties 添加输入转换器
- python - Tkinter 覆盖文本
- angular - Angular 11-TypeError:无法在“窗口”上执行“获取”:非法调用