Подтвердить что ты не робот

Переименовать имя каталога до того, как произойдет слияние

У меня есть каталог, например. /var/tmp/my-dir/, который я часто сжимаю с помощью следующей команды:

$ cd /var/tmp/
$ tar -zcf my-dir.tar.gz my-dir/*

Позже, когда я распакую my-dir.tar.gz, он создаст my-dir/ в текущем каталоге. Похоже, что каталог my-dir "завернут" внутри tarball. Есть ли опция tar для переименования my-dir, например. your-dir до происходит фактическое мигренирование. Так что...

$ tar -zxf my-dir.tar.gz
# So that ... this creates your-dir/, instead of my-dir/

Спасибо.

4b9b3361

Ответ 1

Какой tar?

GNU Tar принимает аргумент --transform, которому вы даете выражение sed для управления именами файлов.

Например, чтобы переименовать во время распаковки:

tar -zxf my-dir.tar.gz --transform s/my-dir/your-dir/

BSD tar и S tar аналогичным образом имеют аргумент -s, используя простой /old/new/ (а не общий sed).

Ответ 2

Для mac работает -s флаг.

Переименовать при сжатии:

tar -zcf my-dir.tar.gz -s /^my-dir/your-dir/ my-dir/*

Переименовать при извлечении:

tar -zxf my-dir.tar.gz -s /^my-dir/your-dir/