自分のフォルダのコンテンツをシステム上の別のフォルダにインストールするための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」は、関連情報をもたらしません。
ありがとう!
解決策が必要な場合は、次のようにします。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"
要旨としても利用可能です ここ
ソースinstall
の側はファイルリストです(info
による)。だから、使用する
install source/* /destination
-d
および-D
オプションは、宛先に欠落したディレクトリを作成します(違いはあります)、-t
オプションは、destinationがディレクトリであることを意味します。
ディレクトリオプションを使用すると、各ソースファイルを宛先フォルダにソースのファイル名でコピーします