У GNU tar(1)
есть аккуратная опция под названием --transform
. Со страницы руководства:
--transform, --xform EXPRESSION
использовать sed replace EXPRESSION для преобразования имен файлов
Это позволяет преобразовывать имена путей на лету во время извлечения архива, чтобы вы могли контролировать, где и как он будет извлечен.
У меня вопрос, есть ли способ выполнить аналогичное преобразование на месте ; т.е. без распаковки архива?
пример
[user@host]$ tar tf test.tar
./foo/blah ./foo/bleh
[user@host]$ some_deep_magic 's/foo/bar/' test.tar
[user@host]$ tar tf test.tar
./bar/blah ./bar/bleh
Случай использования
Я распространяю tar
архив среди практически не знающих конечных пользователей и хотел бы, чтобы он извлекался по правильному пути без вмешательства со стороны меня. Я пытаюсь избежать тривиального решения по извлечению архива, переименованию каталогов и перепаковке, так как архив довольно большой.