编写unix脚本以比较源目录和目标目录中的文件时需要指导

时间:2013-05-21 17:42:39

标签: shell unix scripting-language

我想编写一个unix脚本,其中:

source dir:/ test1 / jobs / def1,def2,def3 ....等等 目标目录:/ test2 / jobs / def1,def2,def3 ....等等

scenario1:我想比较源目标和目标目录中的jobs文件夹,它们与def1,def2,def3等文件完全相同。如果在目标中找不到任何文件,它应该捕获这种差异在日志文件中。

scenario2:现在完成文件级别检查后:

来源目录:/ test1 / jobs / def1,def2,def3,mam1,mam2,mam3,mam4,try1,try2,try3,cus1,cus2,cus3,kit1,kit2,kit3 ......等等< / p>

目标目录:/ test2 / jobs / def1,def2,def3,mam1,mam2,mam3,mam4,try1,try2,try3,cus1,cus2,cus3,kit1,kit2,kit3 ......等等< / p>

现在我需要编写一个脚本,我应该在运行时传递输入参数作为字符串,例如,如果我给'def'than脚本应该比较从def开始的文件内容仅从源到目标而不是所有其他。如果内容不匹配,应该在我的日志文件中捕获。

非常感谢任何帮助。提前致谢。 Ĵ

1 个答案:

答案 0 :(得分:0)

您不需要脚本。您需要的是一个用于比较文件和/或目录的工具。您可以尝试MeldGit

例如,下面是一个如何使用Git完成此操作的示例:

$ cd test1
$ git init
$ git add .
$ git commit -m "Add source files"
$ git branch -M master source
$ cd ../test2
$ mv ../test1/.git .
$ git checkout -b target
$ git add .
$ git commit -m "Add target files"

这为您设置了一个包含“源”和“目标”文件的Git存储库。然后你可以像这样比较它们:

$ git diff source target             # Compares everything
$ git diff source target jobs/def*   # Compares only "def" directories