943,948 Members | Top Members by Rank

Ad:
Oct 26th, 2005
0

comparing two directory tree structures

Expand Post »
Hi,
I am Rajesh. I am totally new to shell scripting. I have to prepare a shell script which comapres two directory tree structures ( directory contents comparision is not necessary).

for example, suppose I had installed a software system long back and now I want to upgrade that software but I dont want to disturb the tree stucture. So I had to check the directory tree structure of Updated software with the directory tree strucure of previous version software.

here is the code I am preparing for this problem..but I am not able to achieve my goal. So please, If anyone can review the code and point out where I am going wrong, I would be thankful to them.

the code is :
---------------------------------------------------------------------
#!/bin/bash
#
# compare: compare directory trees recursively and report the differences.
# Author: Rajesh thota

function gettype () {
if [ -d $1 ]; then
echo "directory"
else
echo "notdirectory"
fi
}

function exists () {
if [ -e $1 -o -L $1 ]; then
return 0;
else
echo "rajesh $1 does not exist."
return 1;
fi
}

function comparedirectory () {
local result=0
local v1=0
local v2=0
for i in `(ls -A $1 && ls -A $2) | sort | uniq`; do
# v1=$(gettype $1/$i)
# v2=$(gettype $2/$i)
# echo "$v1"
# echo "$v2"
# if [ ($v1 = "directory") && ($v2 = "directory") ]; then
compare $1/$i $2/$i || result=1
# fi
done
return $result
}

# compare directories
function compare () {
(exists $1 && exists $2) || return 1;
local type1=$(gettype $1)
local type2=$(gettype $2)

echo "$type1"
echo "$type2"

if [ $type1 = $type2 ]; then
comparedirectory $1 $2
else
echo "type mismatch: $type1 ($1) and $type2 ($2)."
false
fi
return
}

if [ 2 -ne $# ]; then
cat << EOU
Usage: $0 dir1 dir2
Compare directory trees:
directories are checked for identical tree stuctures

exit 10
fi
---------------------------------------------------------------------

Thanking you a lot

Regards
Rajesh
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
raj_thota is offline Offline
1 posts
since Oct 2005
Nov 15th, 2005
0

Re: comparing two directory tree structures

Assuming I understand your problem:
Shell Scripting Syntax (Toggle Plain Text)
  1. find /path1 -exec basename {} \; | sort > file1
  2. find /path2 -exec basename {} \; | sort > file2
  3. # at this point you can use diff file1 file2
  4. # or
  5. # here we want files only listed in file1 but not in file2
  6. comm -23 file1 file2
  7. # here we show files listed in file2 but not in file1
  8. comm -23 file2 file1
Reputation Points: 62
Solved Threads: 10
Junior Poster
jim mcnamara is offline Offline
179 posts
since May 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Shell Scripting Forum Timeline: removing duplicate lines in unix
Next Thread in Shell Scripting Forum Timeline: Problem with ksh loop





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC