bash - 在 tar 发生之前重命名目录名称

标签 bash shell command-line tar

我有一个目录,例如/var/tmp/my-dir/ 我经常使用以下命令压缩:

$ cd /var/tmp/
$ tar -zcf my-dir.tar.gz my-dir/*

稍后,当我解压 my-dir.tar.gz 时,它将在当前目录中创建 my-dir/。听起来 my-dir 目录被“包裹”在 tarball 中。是否有一个 tar 选项可以将 my-dir 重命名为例如your-dir before 实际的 tarring 发生了。这样……

$ tar -zxf my-dir.tar.gz
# So that ... this creates your-dir/, instead of my-dir/

谢谢。

最佳答案

哪个tar

GNU Tar接受一个 --transform 参数,你可以给它一个 sed 表达式来操作文件名。

例如解包时重命名:

tar -zxf my-dir.tar.gz --transform s/my-dir/your-dir/

BSD tar 和 Star 同样有一个 -s 参数,采用简单的 /old/new/ (不是一般的 sed 表达式).

关于bash - 在 tar 发生之前重命名目录名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9729793/

相关文章:

python - 使用 Python 的函数返回值为 shell 变量赋值

linux - 在不重启 Ubuntu 的情况下全局设置环境变量

bash - 测试是否在 bash 中设置了 env 变量

bash - 如何在 Bash 中将变量设置为命令的输出?

java - 命令行是以编程方式配置 Wildfly 10 的唯一方法吗?

linux - cp 命令在不存在的文件上发生冲突

linux - 剪切字符串直到指定字符。狂欢

bash - 解压缩 - 警告和 map 名称

python - 根据文件名中的特定模式 move 文件,同时保留文件夹结构

macos - 如何在 Mac OS X 上以编程方式挂起/恢复进程及其子进程?