用于通配符安装的Linux“install”命令

时间:2010-01-21 16:35:56

标签: linux install

有没有办法使用“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 个答案:

答案 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
相关问题