だから私は私の内容のいくつかを含むリポジトリを持っています。構成ファイルmakefile
私のホームディレクトリにインストールするために1つを作成しようとしています。私が経験している問題は、bashから直接次のコマンドを実行するときです。
install -m 755 -d ~/path/to/dotfilesDir/ ~/
何も起こらないと思います。
install -m 755 ~/path/to/dotfilesDir/{file1,file2,...} ~/
期待どおりに動作します。
最初の(よりシンプルでクリーンな)ソリューションが機能しないのはなぜですか?
ベストアンサー1
@Joseph R.の答えから始めて彼のコマンドを操作することができなかったので、findと連携させるための解決策は次のとおりです。 (そうではないと思います。ルールが適用されるためです。\+
要素の後には何も来ません。{}
)(コメントできません。実際には段落全体が削除されることがあります)
すべてのファイルをまったく同じディレクトリ(ここtarget/directory
)にコピーするには、次の手順を実行します。
find directory/to/copy -type f -exec install -Dm 755 "{}" "target/directory" \;
-D
必須ではなく、宛先が存在しないディレクトリのみが作成されます。
現在の場所から始めてディレクトリ階層全体とそのファイルをコピーする(空のディレクトリは省略)
find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;
前述のように、これは最初からツリーを再生成します$PWD
。また、空のディレクトリをコピーする必要がある場合は、-type d
ofとを使用するfind
方法を見つけることができますinstall -d
。
したがって、ツリーをコピーするには、次のディレクトリから始めます$PWD
。
(cd parent/directory && find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;)
どのようにparent/directory
コピーされないかを確認してください。
追加
を使用している場合、shell/fish
次の行は同じことを行います。
fish -c 'cd parent/directory; and find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \\;'