我有两个文件夹(我将使用数据库名称作为示例):
这两个文件夹里面有类似的文件:
MongoFolder /
CassandraFolder /
这些文件的内容也非常相似,例如只更改数据库的名称,因此它们都只有代码或配置,只更改Mongo
的名称Cassandra
。
如何比较这两个文件夹,结果是文件从一个文件夹丢失到另一个文件夹(例如 CassandraFolder 文件 CassandraPlugin )以及文件内容相似,必须类似,只更改数据库名称。
答案 0 :(得分:1)
这将为您提供丢失文件的名称(减去数据库名称):
find MongoFolder/ CassandraFolder/ | \
sed -e s/Mongo//g -e s/Cassandra//g | sort | uniq -u
输出:
Folder/Plugin
答案 1 :(得分: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上有所不同。