Archive::Tar или аналогичное программное обеспечение было бы одним из методов.
% touch foo
% tar cvf x foo
foo
% tar tvf x
-rw-rw-r-- 1 jdoe12 jdoe12 0 May 6 20:36 foo
% perl -MArchive::Tar -e '$t=Archive::Tar->new;$t->read("x");$t->chown("foo","root");$t->write("y")'
% tar tvf y
-rw-rw-r-- 1 root jdoe12 0 May 6 20:36 foo
%
Это будет работать в Linux, если вы установите curl. Или попробуйте
xargs -I% wget -q -O - http://ipinfo.io/%/geo <ips.txt >temp.txt
Для более быстрой обработки рассмотрите возможность использования GNU Parallel:
cat ips.txt | parallel -j 100 curl -s http://ipinfo.io/{}/geo > temp.txt
Это также гарантирует, что вывод из разных заданий не смешивается, поэтому, если вы используете вывод, вы гарантированно не получите половину строки из двух разных рабочие места.
GNU Parallel — это универсальный распараллеливатель, который позволяет легко выполнять задания параллельно на одной машине или на нескольких машинах, к которым у вас есть доступ по ssh.
Если у вас есть 32 разных задания, которые вы хотите запустить на 4 процессорах, прямой путь к распараллеливанию — запуск 8 заданий на каждом процессоре:
GNU Parallel вместо этого порождает новый процесс после завершения одного — сохраняя активность процессоров. и, таким образом, сэкономить время:
Установка
Из соображений безопасности вам следует установить GNU Parallel с помощью вашего менеджера пакетов, но если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить персональную установку, которая не требует root-доступа. Это можно сделать за 10 секунд, выполнив следующие действия:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Другие варианты установки см. http://git.savannah.gnu.org/cgit/parallel.git/tree/README
Подробнее
] См. другие примеры: http://www.gnu.org/software/parallel/man.html
Посмотрите вступительные видеоролики: https://www.youtube.com/playlist?list= PL284C9FF2488BC6D1
Ознакомьтесь с руководством: http://www.gnu.org/software/parallel/parallel_tutorial.html
Подпишитесь на список адресов электронной почты для получения поддержки: https://lists .gnu.org/mailman/listinfo/parallel