bash 在 tar 发生之前重命名目录名称
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/9729793/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Rename Directory Name Before tar Happens
提问by moey
I have a directory e.g. /var/tmp/my-dir/
that I frequently compress with the following command:
我有一个目录,例如/var/tmp/my-dir/
我经常使用以下命令进行压缩:
$ cd /var/tmp/
$ tar -zcf my-dir.tar.gz my-dir/*
Later, when I untar my-dir.tar.gz, it'll create my-dir/
in the current directory. It sounds like the my-dir
directory is "wrapped" inside the tarball. Is there a taroption to rename my-dir
to e.g. your-dir
beforethe actual tarring happens. So that ...
稍后,当我解压my-dir.tar.gz 时,它将my-dir/
在当前目录中创建。听起来该my-dir
目录被“包装”在 tarball 中。是否有一个tar选项可以在实际 tarring 发生之前重命名my-dir
为。以便 ...your-dir
$ tar -zxf my-dir.tar.gz
# So that ... this creates your-dir/, instead of my-dir/
Thanks.
谢谢。
回答by ephemient
Which tar
?
哪个tar
?
GNU Taraccepts a --transform
argument, to which you give a sed
expression to manipulate filenames.
GNU Tar接受一个--transform
参数,您可以为其提供一个sed
表达式来操作文件名。
For example, to rename during unpacking:
例如,在解包过程中重命名:
tar -zxf my-dir.tar.gz --transform s/my-dir/your-dir/
BSD tar and S tar similarly have an -s
argument, taking a simple /old/new/
(not a general sed
expression).
BSD tar 和S tar 同样有一个-s
参数,取一个简单的/old/new/
(不是一般的sed
表达)。
回答by DamneD
For mac works -s
flag.
对于 mac 作品-s
标志。
Rename on compress:
压缩时重命名:
tar -zcf my-dir.tar.gz -s /^my-dir/your-dir/ my-dir/*
tar -zcf my-dir.tar.gz -s /^my-dir/your-dir/ my-dir/*
Rename on extract:
在提取时重命名:
tar -zxf my-dir.tar.gz -s /^my-dir/your-dir/
tar -zxf my-dir.tar.gz -s /^my-dir/your-dir/