Проведіть цикл через файл та виконайте команди на кожному файлі


5

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

Дякую!

Відповіді:


1

За допомогою GNU tar можна використовувати опцію --to-command

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

Наприклад, це буде друкувати хеші sha1 для всіх файлів в архіві

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

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 Parale_tutorial). Ти командний рядок з любов'ю тебе за це.


Це добре, але я шукаю нестандартний підхід із використанням сценарію, sed, awk тощо.
Ken J,

І Perl onliner вгорі, і GNU Parallel - це сценарії perl: git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel, щоб вони добре відповідали вашим цілям.
Оле Танге
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.