2014-12-03 227 views
1

我有兩個文件夾進行比較,但它不是那麼簡單,只是使用diff -r來做到這一點。FOR循環遍歷兩個文件夾

而不是差異,我使用一個小的條件函數。也許這個函數本身很重要,所以我會在這裏粘貼它。

function timeDiff() { 

local time1="$(head -n 1 "$1")" 

local time2="$(head -n 1 "$2")" 

    echo $time1 
    echo $time2 

    if (("$time1" < 60)) && (("$time2" < 60)); then 

    echo No comparision needed. 

    else 

    diff $1 $2 

    fi 
} 

現在。我有2個文件夾,他們目前看起來像這樣:

Folder name: 1 Folder name: 2 
1.txt    1.txt 
2.txt    2.txt 

這裏是我眼中的鹽。第二個功能。它的目的是(可能含有僞代碼):

  1. 在通過這兩個文件夾循環迭代,採取的第一個文件1.txt,檢查是否有在第二個文件夾同名1.txt一個文件,如果這樣做,運行timeDiff函數,然後轉到下一個文件(1/2.txt``2/2.txt)等等。

對於現在的第二個功能是這樣看:

function recuDiff() { 
    for file1 in $1 && file2 in $2 
    do 
    timeDiff $file1 $file2 
    done 

} 

我試了好幾次,但我似乎還沒有找到一種方法,至少運行與多個條件環...

+0

@SandyElms:對不起,誤加了。原始代碼中沒有發生;) – dziki 2014-12-03 08:03:09

+0

for循環中的'in'關鍵字不檢查目錄中是否存在文件。閱讀['bash'手冊頁](http://www.gnu.org/software/bash/manual/bashref.html#Looping-Constructs) – Jdamian 2014-12-03 08:08:27

回答

2
function recuDiff { 
    find 1 -maxdepth 1 -mindepth 1 -printf '%P\n' | 
    while read each 
    do 
    if [ -e 2/"$each" ] 
    then 
     timeDiff {1,2}/"$each" 
    fi 
    done 
} 
  1. 發現事情1
  2. 如果2檔子事兒運行timeDiff

但是我必須說,更好/更容易的事情將只是把支票 爲不存在的文件中timeDiff

+0

輝煌!謝謝! – dziki 2014-12-03 08:08:12

+0

@dziki看到我最後一句話,我剛剛添加它 – 2014-12-03 08:08:36