1

Я пишу сценарий bash, который упаковывает мое приложение в файл TAR. Файлы не расположены на диске так, как они должны быть расположены в файле TAR, поэтому я решил использовать опцию --transform.

Однако, похоже, что команда --transform применяется глобально, а не к файлам, включенным после.

Пример:

tar \
--exclude='webmanager/bin/dev' \
--exclude='webmanager/.config.ini' \
--show-transformed-names \
--create --gzip --verbose \
--file 'output.tgz' \
-C '../../../' \
'include' \
'resources' \
'webmanager' \
'rootconfig.php' \
-C 'webmanager/bin/dev' \
'index.php' \
'README.md' \
--transform='s|^|webmanager/|r' \
'.config.ini'

По сути, этот код берет файл из webmanager/bin/dev/.config.ini и помещает его в webmanager/.config.ini в файл TAR. Но я хочу только преобразовать файл .config.ini. В настоящее время все содержимое преобразуется и имеет префикс webmanager/ . Я надеялся, что эта команда ведет себя как -C (изменить текущий каталог) - где она влияет только на входы после нее.

Я просмотрел справочные страницы TAR и не могу понять, как это сделать правильно. Пожалуйста помоги!

1 ответ1

1

Кажется, опция --transform работает со всеми файлами. Кстати, я нашел эту страницу о tar которая может вам как-то помочь.

Если можно, я бы предложил вам другой подход: выложите нужные файлы во временный каталог (команда cp сделает), измените ваш .config.in с помощью sed а затем используйте tar для упаковки всего. Вы можете создать скрипт даже для Makefile, если вы знакомы с make .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .