有没有办法使用“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
来测试我的包裹。)
答案 0 :(得分:16)
在安装之前使用以下命令创建目录层次结构:
install -d /dest/path
然后使用:
install -D /source/path/*.py /dest/path
“安装”所有文件。
答案 1 :(得分:9)
也许在安装调用周围使用简单的外部for循环?那怎么样呢?
for f in /source/path/*.py; do \
install -D -t /dest/path $$f; \
done
也就是说,你总是可以从你的Makefile,debian / rules文件中取出逻辑,然后独立测试它,而不必运行pbuilder
。
其他当然是使用pbuilder
进行内部项目的道具!
答案 2 :(得分:6)
我对pbuilder一无所知,但对于我的情况(Arch Linux的PKGBUILD)我正在使用带有find的BASH for循环:
for file in $(find source -type f -name *.py); do
install -m 644 -D ${file} dest/${file#source/}
done
find命令可以适合尝试或多或少地特定于复制的内容。在上面的例子中,将选择在源/下面的.py结尾的所有常规文件。
答案 3 :(得分:1)
man install显示复制多个文件时必须存在DEST。
... 在前三个表单中,将SOURCE复制到DEST或多个SOURCE复制到现有DIRECTORY ,同时设置权限模式和所有者/组。在第4种形式中,创建给定目录的所有组件。 ...
答案 4 :(得分:0)
好吧,也许我正在恢复一个旧职位,但我认为这对未来的研究是有价值的。从nharward给出的示例(我也使用arch linux和PKGBUILD),我进行了修改,以便无论目录结构如何,我都不必担心文件的模式/权限(-m)。 / p>
for file in $(find ${srcdir} -type f); do
install -m $(stat -c%a ${file}) -D ${file} ${pkgdir}/${file#${srcdir}}
done