You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在解压Zip文件时直接重命名指定目录(一步操作)

可以直接在解压时重命名顶层目录

当然可以!不用单独执行mv命令,有几种简洁的方法能直接实现你的需求:

方法1:用bsdtar(跨平台友好,macOS默认自带,Linux可通过包管理器安装)

bsdtar能直接处理ZIP压缩包,还支持用--transform参数修改解压后的路径。执行这条命令就行:

bsdtar -xf archive.zip --transform 's/^myDir/myRenamedDir/' -C ~/
  • -xf-x是解压操作,-f用来指定要处理的压缩包文件
  • --transform 's/^myDir/myRenamedDir/':这是sed风格的替换规则,会把所有以myDir开头的路径替换成myRenamedDir
  • -C ~/:指定把内容解压到你的用户主目录下

跑完这条命令,你直接就能得到~/myRenamedDir/x,完全不用额外的重命名步骤。

方法2:用GNU tar(Linux系统默认自带,需版本1.28及以上)

如果你的Linux系统上的GNU tar版本≥1.28,它也支持直接处理ZIP包,同样用--transform参数实现重命名:

tar --zip -xf archive.zip --transform 's/^myDir/myRenamedDir/' -C ~/

参数含义和上面差不多,--zip是告诉tar这是个ZIP格式的压缩包。

方法3:仅用unzip的变通方案(如果没法用tar工具)

要是你的环境只能用unzip,也有办法:先创建目标目录,再把myDir下的所有内容直接解压到目标目录里:

mkdir -p ~/myRenamedDir && unzip archive.zip myDir/* -d ~/myRenamedDir
  • mkdir -p:确保目标目录存在,不存在就自动创建
  • unzip archive.zip myDir/*:指定只解压myDir下的所有内容
  • -d ~/myRenamedDir:把这些内容直接放到目标目录中

这种方法对于你这种只有一层目录的场景完全适用,就算myDir下有多层子目录,也能完整保留结构,最终得到~/myRenamedDir/x

内容的提问来源于stack exchange,提问作者Arcticooling

火山引擎 最新活动