linux下用zip删除/增加/更新文件在某个压缩包指定目录

本文介绍如何使用zip-u命令来更新压缩包中的文件,包括添加、删除和替换文件的具体操作步骤。通过实例演示了如何指定文件路径及在压缩包内创建文件夹。

用zip -u 压缩包路径  要存进的目录/文件名,必须指定某个具体文件并带上绝对路径

例1:我有个压缩包为/var/test.zip, 同时我有个文件为/var/nihao.txt

执行zip -u /var/test.zip /var/nihao.txt,则你好.txt文件在压缩包中的路径仍为var/nihao.txt(在压缩包里创建了var文件夹,放了进去)

例2:假设test.zip压缩包中有个文件夹名为Hi,我想把你好.txt放在Hi文件夹下

首先应该创建目录/var/Hi,然后把你好.txt放在Hi文件夹下,切换工作目录到/var,执行zip -u /var/test.zip Hi/你好.txt,即可

例3:先将压缩包解压到指定目录中,然后cd进入指定目录中,执行删除,增加,更新压缩包中某个文件

zip -d   ../mg.jar    BOOT-INF/classes/config/application-trn.properties

zip -u ../mg.jar      BOOT-INF/classes/config/application-trn.properties

<think>我们面对的问题:用户想通过命令行从一个7z压缩包删除某个特定文件。 7z工具本身提供了删除命令,其基本语法是: 7z d [压缩包文件名] [要删除文件压缩包内的路径] 注意: 1. 要删除文件压缩包内的路径需要正确指定,包括路径和文件名。 2. 路径分隔符在Windows和Linux下可能不同,但7z通常使用Linux风格的斜杠(/)作为路径分隔符,即使在Windows下也是如此。 3. 如果路径中有空格,需要使用引号将路径括起来。 示例: 假设我们有一个名为 archive.7z 的压缩包,里面有一个文件叫 test.txt,位于压缩包的根目录,那么删除命令为: 7z d archive.7z test.txt 如果文件位于压缩包内的 folder 子目录下,则命令为: 7z d archive.7z folder/test.txt 如果文件名或路径有空格,例如 "my file.txt" 在 "my folder" 目录下,则命令为: 7z d archive.7z "my folder/my file.txt" 重要提示:7z的删除操作实际上会创建一个新的压缩包(临时)然后替换原来的压缩包。因此,对于大文件可能需要一些时间,并且需要足够的磁盘空间。 另外,7z工具在Linux和Windows下都可以使用。在Linux中,通常通过p7zip包提供;在Windows中,可以通过安装7-Zip软件获得。 根据之前引用的信息,不同发行版的包名可能不同: Kali Linux: 包名为7zip Ubuntu 18: 包名为p7zip-full 和 p7zip(但通常安装p7zip-full以获得完整功能) 因此,如果系统还没有安装7z命令,需要先安装相应的软件包。 步骤总结: 1. 确保系统已安装7z工具(如果没有,则安装) 2. 使用7z d命令删除指定文件 注意:删除操作是不可逆的,请确保备份重要数据。 下面给出一个完整的示例(假设在Linux环境下): # 安装7z工具(以Ubuntu为例) sudo apt update sudo apt install p7zip-full # 删除压缩包中的文件 7z d archive.7z "path/to/file.txt" 在Windows下,如果已经安装了7-Zip,则可以直接在命令行中使用7z.exe(通常位于安装目录下,如"C:\Program Files\7-Zip\7z.exe"),或者将7-Zip的安装目录添加到系统环境变量PATH中。 在Windows命令提示符(cmd)或PowerShell中,命令类似: 7z d archive.7z "path\to\file.txt" 注意:在Windows中,路径分隔符在7z命令中仍然使用正斜杠(/)或者反斜杠(\)?根据7z的文档,它支持两种分隔符,但为了确保一致性,建议使用双引号包裹路径,并且使用正斜杠(/)作为分隔符。当然,使用反斜杠(\)也是可以的,但在Windows中反斜杠是转义字符,因此在命令行中使用时可能需要两个反斜杠(\\)或者使用双引号。所以,使用正斜杠可以避免这些问题。 因此,在Windows中也可以这样写: 7z d archive.7z "path/to/file.txt" 或者使用反斜杠(注意在双引号内使用单个反斜杠): 7z d archive.7z "path\to\file.txt" 但是,在Windows PowerShell中,反斜杠也是转义字符,所以更推荐使用正斜杠。 最后,我们可以通过以下命令来验证删除是否成功: 7z l archive.7z 这个命令会列出压缩包中的文件,我们可以检查目标文件是否已经被删除。 因此,完整的步骤是: 1. 安装7z(如果未安装) 2. 使用删除命令 3. 验证 注意:在删除操作前,最好先备份原压缩包,以防误删。 相关引用: [^1]: 关于不同发行版安装7z的包名。 [^2]: 这里引用的内容似乎与问题无关,忽略。 根据用户的问题,我们提供了7z删除压缩包文件的命令。</think>### 7z 命令行删除压缩包文件 要使用命令行从 `.7z` 压缩包删除特定文件,语法如下: ```bash 7z d [压缩包名称] [目标文件路径] ``` #### 操作步骤: 1. **定位文件路径** 先查看压缩包内容,确认要删除文件路径: ```bash 7z l archive.7z ``` 输出示例: ``` ... 2023-08-01 12:00:00 ..... 0 0 docs/report.txt # 这是目标文件 ... ``` 2. **执行删除命令** ```bash 7z d archive.7z "docs/report.txt" # 路径需严格匹配 ``` - 路径包含空格时需加引号:`"backup/old files.txt"` - 支持通配符:`7z d archive.7z "temp/*.log"` 3. **验证结果** ```bash 7z l archive.7x | grep "report.txt" # 应无输出 ``` #### 注意事项: 1. **路径敏感性** 路径必须完全匹配压缩包内结构(区分大小写)。 2. **不可逆操作** 删除后无法恢复,建议先备份: ```bash cp archive.7z archive_backup.7z ``` 3. **安装要求** - Linux 需安装 `p7zip` 包: ```bash sudo apt install p7zip-full # Ubuntu/Debian sudo pacman -S p7zip # Arch ``` - Windows 需将 7-Zip 安装目录(如 `C:\Program Files\7-Zip\`)添加到系统 `PATH` #### 示例完整流程: ```bash # 查看内容 7z l project.7z # 删除指定文件 7z d project.7z "src/obsolete.c" # 验证删除 7z l project.7z | grep "obsolete.c" # 无输出表示成功 ``` > **重要提示**:7z 的删除操作本质是创建新压缩包替换原文件,对大文件可能耗时较长。操作前务必确认路径准确性[^1]。 --- ### 相关问题 1. 如何向已有的 7z 压缩包添加新文件? 2. 7z 命令如何设置压缩级别(例如最大压缩)? 3. Linux 和 Windows 的 7z 命令行有哪些主要差异? 4. 如何用 7z 命令加密压缩包并设置密码? [^1]: 不同发行版安装包名可能不同,如 Kali 使用 `7zip`,Ubuntu 使用 `p7zip-full`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值