Так что я довольно новичок в 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]
Теперь давайте перейдем к моему вопросу: как мне получить следующие три структуры архива, учитывая указанную выше структуру файла:
Добавить общую базовую папку
archive.tar
|-> baseFolder
|-> a
|-> Release
|-> [some files]
|-> b
|-> Release
|-> [some files]
Переименовать папки
archive.tar
|-> aChangedFolderName
|-> Release
|-> [some files]
|-> bChangedFolderName
|-> Release
|-> [some files]
Добавить общую базовую папку и переименовать папки
archive.tar
|-> baseFolder
|-> aChangedFolderName
|-> Release
|-> [some files]
|-> bChangedFolderName
|-> Release
|-> [some files]
Для меня не имеет значения, можно ли это сделать за несколько шагов, по крайней мере, я надеюсь, что смогу это сделать. И: № 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