File: compare-dir-trees.sh

package info (click to toggle)
isomaster 1.3.7-2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 1,820 kB
  • ctags: 744
  • sloc: ansic: 11,186; makefile: 219; sh: 109; python: 11
file content (54 lines) | stat: -rwxr-xr-x 1,002 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash

FIRST=$1
SECOND=$2

if [[ ! -d $FIRST ]] || [[ ! -d $SECOND ]]
then
  echo "Syntax: $0 dir1 dir2"
  exit
fi

cd $FIRST 
find -noleaf | while read NAME
do
  if [[ $NAME = "." ]]
  then
    continue
  fi

  if [[ -e "$FIRST/$NAME" ]] && [[ ! -e "$SECOND/$NAME" ]]
  then
    echo -n "$FIRST/$NAME doesn't exist in $SECOND continue? (Y/n) "
    read GOON
    if [[ $GOON = "n" ]]
    then
      exit 1
    fi
    continue
  fi
  
  if [[ -d "$FIRST/$NAME" ]] && [[ ! -d "$SECOND/$NAME" ]]
  then
    echo "$FIRST/$NAME is a directory but $SECOND/$NAME is not"
    exit 2
  elif [[ ! -d $FIRST/$NAME ]] && [[ ! -d $SECOND/$NAME ]]
  then
    echo -n "Checking $NAME: "
    if [[ `md5sum "$FIRST/$NAME" | cut -f 1 -d ' '` != `md5sum "$SECOND/$NAME" | cut -f 1 -d ' '` ]]
    then
      echo -n "Files are not the same, continue? (y/n) "
      read GOON
      if [[ $GOON = "n" ]]
      then
        exit 3
      fi
    else
      echo "OK."
    fi
  else
    echo "Skipped $NAME"
  fi
  
done