2011-04-13 81 views
0

我有兩個目錄說A和B. 我想比較目錄B和A. 目錄A和目錄B有許多共同目錄(包含is相同)和文件。
如果文件不存在於目錄A中,則通過維護目錄結構將文件複製到目錄C.遞歸比較兩個目錄,使用shell腳本將目錄的內容複製到第三個目錄

例如如果在目錄中,則不存在以下相對路徑。

B/hellboy/MyScripts/dir1/ 

我想這條道路和後代文件和目錄複製到目錄下

我嘗試了很多與diff命令。但我認爲這是不可能的。請幫我擺脫這一點。

+0

Windows還是Linux? – ds27680 2011-04-13 11:20:15

+0

linux操作系統 – Vivek 2011-04-13 11:24:12

+0

'diff dira dirb' – kurumi 2011-04-13 11:33:41

回答

0

查看rdiff-backup(相對於rsync),它可能提供您想要的開箱即用功能。

+0

我想編寫腳本和源和目標目錄在同一臺計算機 – Vivek 2011-04-13 15:00:44

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") 
相關問題