Я несколько сомневаюсь, чего вы хотите достичь на своих примерах. Я не понимаю, чего должен достичь первый канал в первом примере, так как вывод, который передается по трубопроводу во второй tar, не используется. &&
может показаться лучшим способом объединить обе команды (выполнить вторую, только если первая была успешной). Кроме того, если вы используете полный список файлов для извлечения (и только для этой задачи), как в ваших примерах, не будет необходимости тратить отдельный запуск tar на его создание, так как tar по умолчанию будет распакуйте все файлы, если не указано иное.
Что касается скорости, то смола на приемном конце канала не имеет специальных средств, чтобы различать, поступает ли входной сигнал от другого смола для оптимизации. Что действительно важно, так это то, что в случае двух команд tar первая немедленно начнет вывод, и поэтому второй tar может начать работать, в то время как xargs сначала соберет все данные, а затем начнет вывод и подачу. смолка побежала за ним.
Если вы ищете быстрый способ извлечь только подмножество файлов из архива tar и хотите выбрать по имени файла, я бы рекомендовал использовать star , который имеет встроенную команду поиска .