如何比较unix中的html文件

时间:2016-08-11 09:39:13

标签: unix sh

我有两个包含大量HTML文件的文件夹,我想比较每个文件以及如何使用shell脚本/ unix命令获取每个文件的差异。

例:
目录1:

1.html
2.html
3.html

目录2:

1.html
2.html
3.html..

我想将目录中的1.html1.html中的dir2进行比较,将2.html2.html进行比较,依此类推。

2 个答案:

答案 0 :(得分:1)

试试这个;

#!/bin/bash
for file in $1/*.html; do
fileName=$(basename "$file")

if [ ! -f $2/$fileName ]; then
    echo $fileName " not found! in "$2
else
    difLineCount=$(diff $file $2/$fileName | wc -l)
    if [ $difLineCount -eq 0 ]; then
        echo $file "is same " $2/$fileName;
    else 
       echo $file "is not same " $2/$fileName "." $difLineCount "lines are different"; 
       #diff $file $2/$fileName
    fi
fi
done

for file in $2/*.html; do
fileName=$(basename "$file")
    if [ ! -f $1/$fileName ]; then
            echo $fileName " not found! in "$1
    fi
done

前:

user@host:/tmp$ ./test.sh Directory_1 Directory_2
Directory_1/1.html is same  Directory_2/1.html
Directory_1/2.html is same  Directory_2/2.html
Directory_1/3.html is not same  Directory_2/3.html . 4 lines are different
4.html  not found! in Directory_2
5.html  not found! in Directory_1


user@host:/tmp$ ls -alrt Directory_1/
total 20
-rw-rw-r-- 1 user user    6 Ağu 11 13:28 1.html
-rw-rw-r-- 1 user user    6 Ağu 11 13:28 2.html
-rw-rw-r-- 1 user user    6 Ağu 11 13:28 3.html
-rw-rw-r-- 1 user user    0 Ağu 11 13:41 4.html
drwxrwxr-x 2 user user 4096 Ağu 11 13:41 .
drwxrwxr-x 4 user user 4096 Ağu 11 13:48 ..


user@host:/tmp$ ls -alrt Directory_2/
total 20
-rw-rw-r-- 1 user user    7 Ağu 11 13:28 3.html
-rw-rw-r-- 1 user user    6 Ağu 11 13:28 2.html
-rw-rw-r-- 1 user user    6 Ağu 11 13:28 1.html
-rw-rw-r-- 1 user user    0 Ağu 11 13:44 5.html
drwxrwxr-x 2 user user 4096 Ağu 11 13:44 .
drwxrwxr-x 4 user user 4096 Ağu 11 13:48 ..

答案 1 :(得分:0)

您可以使用comm命令比较已排序的文件。这可能是您正在寻找的实际解决方案。

语法:comm file1 file2

逐行比较已排序的文件FILE1和FILE2。 没有选项,comm产生三列输出。第一列包含FILE1特有的行,第二列包含FILE2特有的行,第三列包含两个文件共有的行。可以使用选项单独抑制这些列中的每一列。

将comm命令保持在循环中,以便比较所需目录中的所有文件。

如果您想手动逐个比较文件:

您需要使用diff命令显示两个文件之间的逐行差异。

语法:diff path/FILE1 path/FILE2

您可以使用--changed-group-format和--unchanged-group-format选项来过滤所需的数据。

以下三个选项可用于为每个选项选择相关组:

'%<'从FILE1获取行 '%>'从FILE2获取行 ''(空字符串)用于从两个文件中删除行。

示例:diff --changed-group-format="%<" --unchanged-group-format="" file1 file2

您可以使用命令sdiff:

在两个文本文件之间获得明确的视觉差异

语法:sdiff path/file1 path/file2

如果安装了vim编辑器 使用:vim -d file1 file2