2010-01-21 78 views
11

命令是否有使用「install」一次使用「通配符」的格局,在安裝多個文件的方式(而且還有「安裝」創建領先的目錄層次結構)?Linux的「安裝」通配符安裝

我試過幾種不同的方式:

  • 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來測試我的軟件包每一次)。

回答

7

也許用一個簡單的外周邊安裝呼叫循環?因此,如何

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

這就是說,你可以隨時取邏輯出你的Makefile,於Debian /規則文件,...並測試它的獨立而無需運行pbuilder

否則當然道具使用pbuilder內部項目!

+0

+1:謝謝。我當然可以使用你的技術,但我只是通過重複嘗試和錯誤找到一個工作解決方案。乾杯。 – jldupont 2010-01-21 16:55:19

+0

@Dirk:即使我選擇了更直接的解決方案IMO,我也會接受你的答案。但是,嘿,有很多方法可以去做。乾杯。 – jldupont 2010-01-22 14:45:20

+0

是的,你的迴應也很不錯。你真的創建.deb包嗎?在這種情況下,dh_installdirs非常簡單 - 只需列出您需要的目錄並完成即可。 Debhelper有許多有用的工具。 – 2010-01-22 15:33:28

17

使用以下方法來創建目錄層次結構,安裝前:

install -d /dest/path 

,然後使用:

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

「安裝」 的所有文件。

+0

是不是'-D'標誌創建目標路徑領先的父目錄的整點?如果他們已經與以前'install'調用創建的,則似乎沒有必要在以後的命令中使用它。你能證明它的使用是否合理,或者可以安全地假設在這種情況下它可以被移除? – 2017-07-31 18:50:21

1

人安裝顯示,DEST必須存在的,如果複製多個文件。

... 在第一三種形式,複製源向DEST或多個源極(S)與現有的目錄,同時設定權限模式和業主/組。在第四種形式中,創建給定DIRECTORY(ies)的所有組件。 ...

+1

...謝謝我已經閱讀過「man」文件... – jldupont 2010-01-21 16:53:34

4

我不知道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命令可以適合品嚐或多或少具體關於被複制的內容。在上面的例子中,所有以source /結尾的.py任何常規文件都將被選中。

+0

如果您想要使用install命令獲得相應的'cp -r ...',那麼這是最好的方法。如果您只想複製整個源代碼目錄結構(而不​​是僅獲取* .py),則只需將'-name * .py'離開即可。 – 2014-11-29 23:19:28

0

好吧,也許我在恢復舊的文章,但我認爲這是值得進一步研究。從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