2011-04-13 20 views
0

を使用してディレクトリの内容を第3のディレクトリにコピーします。 ディレクトリBをAと比較したいと考えています。 ディレクトリAとディレクトリBには、同じ)とファイル。
ディレクトリAにファイルが存在しない場合は、ディレクトリ構造を維持してファイルをディレクトリCにコピーします。2つのディレクトリを再帰的に比較すると、シェルスクリプト

ディレクトリAの場合、次の相対パスは存在しません。

B/hellboy/MyScripts/dir1/ 

私はdiffコマンドで多くのことをしようとしたディレクトリCに

をこのパスと子孫のファイルやディレクトリをコピーします。しかし、私はそれが不可能だと思う。私はこれを手伝ってください。

+0

WindowsまたはLinux? – ds27680

+0

Linuxのopreatingシステム – Vivek

+0

'diff dira dirb' – kurumi

答えて

0

rdiff-backup(親戚はrsync)です。これは、あなたが箱から欲しいものを提供するかもしれません。

+0

私は同じスクリプトを使用しています。 – Vivek

0

次のスクリプトスニペットは、探しているものに近づいていますか?

#!/usr/bin/env bash 

# Setup for testing: 
# mkdir -p A/l1-{1,2,3}/l2-{4,5,6} 
# mkdir -p B/l1-{2,3,4,5}/l2-{1,2,3,4} 
# touch B/l1-{3,4,5}/l2-{2,3,4}/file-${RANDOM} 
# touch {A,B}/l1-2/l2-4/never_goes_to_C 

while read f d _; do 
    if [ -e "A/$f" ]; then 
    echo "---> FOUND: A/$f" 
    else 
    echo "---> NOT FOUND: A/$f, moving to C" 
    mkdir -p "C/$d" && cp -a "B/$f" "C/$d" 
    fi; 
done < <(cd B; find . -printf "%p %h\n") 
関連する問題