Как создать общую базовую папку с помощью 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

Теперь мой архив.tar также имеет format

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 будет самым важным для меня.

5
задан 6 October 2015 в 11:08

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 с [приблизительно 117] опции:

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
8
ответ дан 6 October 2015 в 11:08

Другие вопросы по тегам:

Похожие вопросы: