我有兴趣查看目录列表,并将之前的列表与当前目录列表进行比较,并设置脚本来执行此操作。也许在perl或shell脚本中。
我应该使用像diff这样的东西吗?以编程方式,这将是一个理想的方法吗?例如,假设我将diff输出到输出文件,如果没有diff然后退出,如果有结果,我想看到它。
比如说,我今天有以下目录:
/foo/bar/staging/abc
/foo/bar/staging/def
/foo/bar/staging/a1b2c3
第二天看起来像添加或重命名目录:
/foo/bar/staging/abc
/foo/bar/staging/def
/foo/bar/staging/ghi
/foo/bar/staging/a1b2c4
答案 0 :(得分:2)
可能有更好的方法,但我通常做这样的事情的方法是在每个目录根目录中运行find命令,并将输出传递给单独的文件。然后,您可以使用您选择的diff工具来区分文件。如果要过滤掉某些目录或文件,可以在管道中输入一些grep
或grep -v
命令,或者可以在find
命令上试验选项。
另一个主要选项是找到一个提供目录/文件夹比较的差异工具。大多数商品支持这一点,但我喜欢命令行方法,因为你可以更好地控制你正在分化的东西。
cd /my/directory/one
find . -print | sort > /temp/one.txt
cd /my/directory/two
find . -print | sort > /temp/two.txt
diff /temp/one.txt /temp/two.txt
答案 1 :(得分:0)
还要检查inotifywait
命令。它允许您监视RT中的文件。
答案 2 :(得分:0)
您也可以使用-newer开关考虑find命令。
用法是:
find . -newer timefile.txt -print
-newer开关使find返回在指定文件的修改时间之后创建或更新的文件列表。在上面的示例中,将返回在timefile.txt之后创建或更新的任何文件。您必须创建一个timefile.txt文件,最有可能每天一次。某些版本的find具有较新的变体,可与文件的其他时间戳(最后修改,最后访问,最后创建等)进行比较。
但是,此技术不会报告已删除的文件。文件列表的每日差异可以报告。