1

我有两个文件夹(我将使用数据库名称作为示例):

  • Mongo文件夹/
  • Cassandra文件夹/

这两个文件夹里面有类似的文件,如:

  • Mongo文件夹/

    • 蒙哥文件
    • MongoStatus
    • Mongo配置
    • 蒙古插件
  • Cassandra文件夹/

    • Cassandra文件
    • 卡桑德拉状态
    • Cassandra配置

这些文件的内容也非常相似,例如仅更改了数据库的名称,因此它们都有代码或配置,仅更改MongoCassandra.

我如何比较这两个文件夹,所以结果是文件从一个到另一个丢失(例如 CassandraFolder 的文件CassandraPlugin并且文件的内容必须相似,只更改数据库名称.

4

2 回答 2

1

这将为您提供丢失文件的名称(减去数据库名称):

find MongoFolder/ CassandraFolder/ | \
      sed -e s/Mongo//g -e s/Cassandra//g | sort | uniq -u

输出:

Folder/Plugin
于 2013-06-06T13:28:53.517 回答
1

以下提供了完整的差异,包括丢失的文件和更改的内容:

cp -r CassandraFolder cmpFolder
# rename files
find cmpFolder -name "Cassandra*" -print | while read file; do
    mongoName=`echo "$file" | sed 's/Cassandra/Mongo/'`
    mv "$file" "$mongoName"
done
# fix content
find cmpFolder -type f -exec perl -pi -e 's/Cassandra/Mongo/g' {} \;

# inspect result
diff -r MongoFolder cmpFolder # or use a gui tool like kdiff3

不过,我还没有对此进行测试,请随时修复错误或询问具体内容是否不清楚。而不是mv你也可以使用rename,但这在不同风格的 linux 上是不同的。

于 2013-06-06T18:55:51.390 回答