Обновление файла библиотеки в нескольких местах в Linux
У меня есть библиотечный файл, к которому я часто обращаюсь, как и вы, из библиотеки. например /library/component.js
Но иногда к этому нужно обращаться как к копии в папке проекта. например. .../someProject/library/component.js
Моя проблема в том, что если я обновлю основную версию component.js
Я хочу обновить много версий проекта. Я не знаю, где находятся все копии проекта, за исключением того, что у них есть один корневой каталог, который для этого обсуждения назовем /projects
,
Алгоритм:
(1) Поиск component.js
во всех подкаталогах /projects
,
(2) Обновить с помощью основного файла, если новее
(Другие функции сборки и обновления, такие как FTP, выходят за рамки, но журнал был бы неплох.)
Q1: есть ли утилита Linux, которая будет работать?
Q2: Может кто-нибудь предложить сценарий оболочки?
(Я умею делать умные пакетные сценарии MS-DOS, но я новичок, когда дело доходит до командной строки Linux.)
1 ответ
Если файлы, которые вы пытаетесь обновить, не создаются и не удаляются часто, вы можете использовать команду locate.
(1) Поиск component.js во всех подкаталогах / проектов. (Используйте locate component.js)
Затем вы можете использовать rsync для обновления этих файлов один за другим. Может быть, пройдя вывод команды locate.
п.с.
Если вы не можете найти свои файлы, просто запустите команду "updatedb" один раз.
(1) Поиск
component.js
во всех подкаталогах/projects
,(2) Обновить с помощью основного файла, если новее
(Другие функции сборки и обновления, такие как FTP, выходят за рамки, но журнал был бы неплох.)
Q1: есть ли утилита Linux, которая будет работать?
Да, это называется find
:
find /projects -name component.js ! -newer /library/component.js -exec cp /library/component.js {} \;
Для журнала мы можем добавить опцию -v
после cp
и перенаправить вывод.