Mar*_*ger 9 command-line archive tar
因此,尽管我是一名计算机科学家,但我对 Ubuntu 和整个 Linux 环境还是很陌生,我想熟悉基本命令。
目前我正在处理 .tar 和 .tar.gz 文件,但在创建其中一个文件时遇到了问题。
假设我有以下文件结构:
./
|-> a
|-> Release
|-> [some files]
|-> b
|-> Release
|-> [some files]
Run Code Online (Sandbox Code Playgroud)
使用以下命令,我目前创建了我的 tar 文件:
tar -cvf ../archive.tar a
tar -rvf ../archive.tar b
Run Code Online (Sandbox Code Playgroud)
现在我的 archive.tar 也有格式
archive.tar
|-> a
|-> Release
|-> [some files]
|-> b
|-> Release
|-> [some files]
Run Code Online (Sandbox Code Playgroud)
现在让我们来回答我的问题:鉴于上述文件结构,我如何实现以下三个存档结构:
添加公共基础文件夹
archive.tar
|-> baseFolder
|-> a
|-> Release
|-> [some files]
|-> b
|-> Release
|-> [some files]
Run Code Online (Sandbox Code Playgroud)重命名文件夹
archive.tar
|-> aChangedFolderName
|-> Release
|-> [some files]
|-> bChangedFolderName
|-> Release
|-> [some files]
Run Code Online (Sandbox Code Playgroud)添加公共基础文件夹并重命名文件夹
archive.tar
|-> baseFolder
|-> aChangedFolderName
|-> Release
|-> [some files]
|-> bChangedFolderName
|-> Release
|-> [some files]
Run Code Online (Sandbox Code Playgroud)对我来说,是否可以分几步完成并不重要,至少我希望我能做到。并且:#1 对我来说是最重要的。
Syl*_*eau 15
您可以使用以下命令执行 1.
tar cvf archive.tar --transform 's,^,baseFolder/,' a b
Run Code Online (Sandbox Code Playgroud)
存档将包含:
$ tar tvf archive.tar
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 baseFolder/a/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 baseFolder/a/foo
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 baseFolder/b/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 baseFolder/b/bar
Run Code Online (Sandbox Code Playgroud)
对于 2. 您可以tar使用多个--transform选项运行:
tar cvf archive.tar --transform 's,^a,changed_a,' --transform 's,^b,changed_b,' a b
Run Code Online (Sandbox Code Playgroud)
存档将包含:
$ tar tvf archive.tar
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 changed_a/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 changed_a/foo
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 changed_b/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 changed_b/bar
Run Code Online (Sandbox Code Playgroud)
对于 3. 你可以结合 1. 和 2. 如下:
tar cvf archive.tar --transform 's,^a,changed_a,' --transform 's,^b,changed_b,' --transform 's,^,baseFolder/,' a b
Run Code Online (Sandbox Code Playgroud)
存档将包含:
$ tar tvf archive.tar
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 baseFolder/changed_a/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 baseFolder/changed_a/foo
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 baseFolder/changed_b/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 baseFolder/changed_b/bar
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9699 次 |
| 最近记录: |