如何用 tar 创建通用基础文件夹以及如何重命名文件夹?

如何用 tar 创建通用基础文件夹以及如何重命名文件夹?

虽然我是一名计算机科学家,但我对 Ubuntu 和整个 Linux 环境还很陌生,我想熟悉基本的命令。

目前我正在处理 .tar 和 .tar.gz 文件,但在创建其中一个文件时遇到了问题。

假设我有以下文件结构:

./
|-> a
    |-> Release
        |-> [some files]
|-> b
    |-> Release
        |-> [some files]

我目前使用以下命令创建我的 tar 文件:

tar -cvf ../archive.tar a
tar -rvf ../archive.tar b

现在我的 archive.tar 也具有格式

archive.tar
|-> a
    |-> Release
        |-> [some files]
|-> b
    |-> Release
        |-> [some files]

现在让我们来回答我的问题:根据上述文件结构,如何实现以下三个档案结构:

  1. 添加通用基础文件夹

    archive.tar
    |-> baseFolder
        |-> a
            |-> Release
                |-> [some files]
        |-> b
            |-> Release
                |-> [some files]
    
  2. 重命名文件夹

    archive.tar
    |-> aChangedFolderName
        |-> Release
            |-> [some files]
    |-> bChangedFolderName
        |-> Release
            |-> [some files]
    
  3. 添加通用基础文件夹并重命名文件夹

    archive.tar
    |-> baseFolder
        |-> aChangedFolderName
            |-> Release
                |-> [some files]
        |-> bChangedFolderName
            |-> Release
                |-> [some files]
    

对我来说,即使它可以分多个步骤完成也没关系,至少我希望我能做到。而且:#1 对我来说是最重要的。

答案1

您可以使用以下命令执行1.:

tar cvf archive.tar --transform 's,^,baseFolder/,'  a b

该档案将包含:

$ 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

对于 2.,您可以tar使用多个--transform选项运行:

tar cvf archive.tar --transform 's,^a,changed_a,' --transform 's,^b,changed_b,'  a b

该档案将包含:

$ 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

对于 3.,您可以将 1. 和 2. 组合如下:

tar cvf archive.tar --transform 's,^a,changed_a,' --transform 's,^b,changed_b,' --transform 's,^,baseFolder/,' a b

该档案将包含:

$ 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

相关内容