Переименовать имя каталога до того, как произойдет слияние
У меня есть каталог, например. /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/
Спасибо.
Ответы
Ответ 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/