web-dev-qa-db-ja.com

フォルダのコンテンツを別のフォルダにインストールする

自分のフォルダのコンテンツをシステム上の別のフォルダにインストールするためのMakefileを作成しようとしています。

このように、同じディレクトリ構造を維持したいと思います。

localfolder
├── a
└── b
    ├── c
        └── d
            ├── e
                └── f

さまざまなオプションを試しましたが、何もしません

$ install -d localfolder /opt/folder
(does nothing)
$ install -t localfolder /opt/folder
install: omitting directory '/opt/folder'
$ install -D localfolder /opt/folder
install: omitting directory 'localfolder'

誰かが私を正しい方向に向けることができますか?グーグル「linuxinstallcommand」は、関連情報をもたらしません。

ありがとう!

3
bl4ckb0ne

解決策が必要な場合は、次のようにします。installコマンドは再帰的に機能しません。そこで、そのトリックを実行するシェルスクリプトを作成しました。

最初の引数はコピーするフォルダーで、2番目の引数はターゲットディレクトリです

#!/bin/sh

# Program to use the command install recursivly in a folder

magic_func() {
    echo "entering ${1}"
    echo "target $2"

    for file in $1; do
        if [ -f "$file" ]; then
            echo "file : $file"
            echo "installing into $2/$file"
            install -D $file $2/$file

        Elif [ -d "$file" ]; then
            echo "directory : $file"
            magic_func "$file/*" "$2"

        else
            echo "not recognized : $file"

        fi
        done
}

magic_func "$1" "$2"

要旨としても利用可能です ここ

3
bl4ckb0ne

ソースinstallの側はファイルリストです(infoによる)。だから、使用する

install source/* /destination

-dおよび-Dオプションは、宛先に欠落したディレクトリを作成します(違いはあります)、-tオプションは、destinationがディレクトリであることを意味します。

ディレクトリオプションを使用すると、各ソースファイル宛先フォルダにソースのファイル名でコピーします

0