5

У меня есть процесс извлечения нового кода на мои серверы, где код упакован в файл tar. Каждый файл, на который есть ссылка в tar, копируется в определенный каталог. Я хотел бы автоматизировать этот процесс, читая tar и обрабатывая каждый файл соответственно. Как я могу сделать это в сценарии оболочки?

Спасибо!

2 ответа2

1

Используя GNU Parallel:

tar xvf foo.tar | perl -ne 'print $last;$last=$_;END{print $last}' | parallel process file

10 секунд установки:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

Узнать больше:

Посмотрите вступительное видео для быстрого ознакомления:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Пройдите учебник (man parallel_tutorial). Ты командная строка с любовью тебя за это.

1

С GNU tar вы можете использовать опцию --to-command

Он будет запускать вашу команду для каждого файла в архиве tar и передавать содержимое файла на свой стандартный ввод.

Например, это напечатает хэши sha1 для всех файлов в архиве

tar -x -z -f archive.tar.gz --to-command 'echo $(sha1sum | cut -d  " " -f 1) $TAR_FILENAME'

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