2011-09-09 14 views
0

フォルダ内のすべての子要素を他の複数のフォルダにコピーするshスクリプトはありますか。私が心に持っているのは、このようなものです。下のフォルダがコピーされます。このフォルダの子を複数のフォルダにコピーする

/X/a/ 
/X/b/ 
/X/c/ 

上書きが必要であるように

/Parent/ChildDir1 
/Parent/ChildDir2 
/Parent/ChildFile1 
/Parent/ChildFile2 

の目的地になります。

おかげ

+0

どちらのシェルですか?ターゲットディレクトリはすでに存在していますか? –

+0

どこに行かなければならないのか明確にしてください。私。 '/ Parent/ChildDir1 =>/X/a'、'/Parent/ChildDir2 =>/X/b'または他のマッピングを意味しましたか? – Kerido

+0

すべての子供たちはそれぞれ/ X/* /ディレクトリに行きます – skuul

答えて

1

私はあなたを理解しているように、あなたはいくつかの先のフォルダに/Parent/からすべてをコピーしたいですか?したがって、/X/a/,/X/b/および/X/c/のそれぞれには、独自の独立したコピーがあります。その場合は、あなただけのこのような全ての目的地をループできます

DESTS = "/X/a/:/X/b/:/X/c/:" 
SRC = "/Parent/" 
while read -d: ddir; do 
    cp -r "$SRC" "$ddir" 
done <<< $DESTS 

DESTSの最後に余分な:あなたはreadの右の呼び出しを見つけた場合、私は

+0

アプリです。 800個の宛先フォルダ。宛先を定義するときにワイルドカードを使用することは可能ですか? – skuul

+0

はい、ワイルドカードを使って 'DESTS'変数を生成することができます。たとえば、 'a 'で始まる'/X/'のすべてのサブディレクトリが必要な場合、' DESTS = $(find/X/-maxdepth 1 -type d -name' a * '-exec echo -n { :\;) '。 (これを行う簡単な方法があるかもしれませんが、これは私の頭の上からちょうど外されています) – carlpett

0
を:(ことができませんでした取り外し可能かもしれません

あなたはXすなわちX/A、X/B、X/Cなどですべてのディレクトリを検索しfindを使用して、再帰的にそれらにあなたのソースディレクトリにコピーすることができます

find /path/to/X -type d -maxdepth 1 -exec cp -r /path/to/Parent {} \; 

ディレクトリリスト場合ファイル内の各行を読み込んで、次のようにcpを実行するだけです:

while IFS= read -r dir 
do 
    cp -r /path/to/Parent "$dir" 
done < dirs.txt 
+0

今、私はファイルをコピーしたくないいくつかのフォルダがあることを認識しました。ファイルからフォルダパスを読むことは可能ですfolder.txt – skuul

+0

@skuulのように、私はファイルからディレクトリを読むための私の答えを更新しました。 – dogbane

関連する問題