Команда "установить" Linux для установки подстановки

Есть ли способ использовать " install" для установки нескольких файлов одновременно с использованием шаблона подстановки (и все еще есть "установить" создать ведущую иерархию каталогов"?

Я пробовал несколько разных способов:

  • install -D -t /dest/path /source/path/*.py
  • install -D -t /dest/path/ /source/path/*.py
  • install -D /source/path/*.py /dest/path
  • install -D /source/path/*.py /dest/path/

Пожалуйста, помогите... для каждого испытания это занимает много времени (я использую pbuilder для тестирования моего пакета каждый раз).

Ответ 1

Может быть, использовать простой внешний цикл для вызова установки? Итак, как насчет

for f in /source/path/*.py; do \
    install -D -t /dest/path $$f; \
done

Тем не менее, вы всегда можете извлечь логику из своего файла Makefile, debian/rules file... и протестировать его автономно без необходимости запускать pbuilder.

В противном случае, конечно, реквизиты для использования pbuilder для внутренних проектов!

Ответ 2

Для создания иерархии каталогов используйте следующую команду:

install -d /dest/path

а затем используйте:

install -D /source/path/*.py /dest/path

чтобы "установить" все файлы.

Ответ 3

Я ничего не знаю о pbuilder, но для моего случая (PKGBUILD для Arch Linux) я использую BASH for-loop с find:

for file in $(find source -type f -name *.py); do
    install -m 644 -D ${file} dest/${file#source/}
done

Команда find может быть подходящей для того, чтобы быть более или менее конкретным в отношении того, что копируется. В приведенном выше примере все обычные файлы, заканчивающиеся на .py в любом месте ниже источника /, будут выбраны.

Ответ 4

man install показывает, что DEST должен существовать, если копировать несколько файлов.

...   В первых трех формах скопируйте SOURCE в DEST или несколько SOURCE (s) в существующий DIRECTORY при настройке режимов разрешений и владельца/группы. В 4-й форме создайте все компоненты данного СПРАВОЧНИКА (-ий). ...

Ответ 5

Хорошо, может быть, я возрождаю старый пост, но я думаю, что это стоит для будущих исследований. Из примера, приведенного nharward (я также использую arch linux и PKGBUILD), я изменил так, что мне не пришлось беспокоиться о mode/permissions (-m) файла, независимо от структуры каталогов.

for file in $(find ${srcdir} -type f); do
    install -m $(stat -c%a ${file}) -D ${file} ${pkgdir}/${file#${srcdir}}
done