Как создать tar.gz каждого файла определенного типа с помощью одной команды?

Нет, она не слишком длинная. Единственное практическое ограничение на версии в RPM заключается в том, что вам следует избегать нескольких специальных символов, таких как "-" и ":".

Может ли быть так, что метаданные на удаленной машине устарели? Если вы сделаете yum clean all или хотя бы yum clean metadata, будет ли после этого какая-нибудь разница.

B.t.w., почему вы отключаете сообщения об ошибках?

Продолжение расследования

Я продолжаю отвечать здесь. К сожалению, это нарушает поток комментариев, но лимит символов в области комментариев слишком мал.

Смысл --showduplicates просто в том, чтобы перечислить все версии пакета, а не только последнюю. Это был просто способ подтверждения.

У меня создается впечатление, что вы видите разные репозитории или, по крайней мере, разные метаданные репозитория на двух хостах. Еще несколько попыток:

  1. Когда вы перечисляете пакеты на стороне сервера, все ли пакеты перечислены как полученные из одного хранилища? (Вы скрыли эту часть в своем дампе.)
  2. Если вы выполните yum repolist -v your-repository на этом хранилище, как на сервере, так и на клиенте, как сравниваются стороны? В частности, одинаково ли количество пакетов и последнее обновление репозитория?
2
28.02.2018, 13:23
2 ответа
find . -name '*.html' -type f -exec sh -c '
   for file do tar czf "$file.tar.gz" "$file"; done' sh {} +

В C:

execlp("find", "find", ".", "-name", "*.html", "-type", "f", "-exec",
       "sh", "-c", "for file do tar czf \"$file.tar.gz\" \"$file\"; done",
       "sh", "{}", "+", 0);
2
27.01.2020, 22:19

Для этого необходимо использовать xargs :

find "dir" -name "*.html" -print0 | xargs -0 -n1 -I % tar zcpf %.tar.gz %

Он обрабатывает почти все специальные символы в именах файлов.

1
27.01.2020, 22:19

Теги

Похожие вопросы