Contents

shell脚本记录:比较拷贝文件

Contents

本文采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,可适当缩放并在引用处附上图片所在的文章链接。

功能

比较参数1,2两个路径中到文件,把参数1路径多出到文件,按完整路径,拷贝到result目录下

脚本

 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
```bash
#!/bin/bash

# 使用示例:
# source to_find_prop_files.sh ~/workspace/org_source_code/out ~/workspace/tsrc_code/out ~/workspace/to_vrz_src_code/out
# 参数1的源包含主要文件和更多的库
# 参数2的源不包含vendor路径。
# 结果将保存在当前目录的result文件夹中。

dir="result"
dir1=$1
dir2=$2

# 如果result文件夹存在,则先删除旧的result目录,并重新创建一个新的result目录。
if [ -e $dir ]; then
    rm -rf $dir
fi
mkdir $dir

# 为result目录创建日志文件
touch $dir/same_path.log
touch $dir/props_files.log

function find_props() {
    for element in $(ls "$1"); do
        dir1_or_file="$1/$element"
        if [ -d "$dir1_or_file" ]; then
            dir2_or_file="$2/$element"
            if [ -e "$dir2_or_file" ]; then
                find_props "$dir1_or_file" "$dir2_or_file"
            else
                sub_path="$dir/$2"
                mkdir -p "$sub_path"
                cp -rf "$dir1_or_file" "$sub_path"
                echo "$dir1_or_file" >>$dir/props_files.log
            fi
        else
            file2="$2/$element"
            if [ -e "$file2" ]; then
                echo "$file2" >>$dir/same_path.log
            else
                sub_path="$dir/$2"
                mkdir -p "$sub_path"
                cp -rf "$dir1_or_file" "$sub_path"
                echo "$dir1_or_file" >>$dir/props_files.log
            fi
        fi
    done

}

find_props "$dir1" "$dir2"
```