Linux "установить" команду для установки подстановочного знака - PullRequest
13 голосов
/ 21 января 2010

Есть ли способ использовать « install » для установки нескольких файлов одновременно с использованием шаблона «подстановочный знак» (и при этом «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 для проверки каждого пакета каждый раз).

Ответы [ 5 ]

16 голосов
/ 21 января 2010

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

install -d /dest/path

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

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

для "установки" всех файлов.

9 голосов
/ 21 января 2010

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

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

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

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

7 голосов
/ 16 февраля 2014

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

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

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

1 голос
/ 12 июля 2017

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

for file in $(find ${srcdir} -type f); do
    install -m $(stat -c%a ${file}) -D ${file} ${pkgdir}/${file#${srcdir}}
done
1 голос
/ 21 января 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...