1

2 つのフォルダーがあります (例としてデータベース名を使用します)。

  • MongoFolder/
  • カサンドラフォルダ/

これらの 2 つのフォルダーには、次のような同様のファイルが含まれています。

  • MongoFolder/

    • モンゴファイル
    • MongoStatus
    • MongoConfiguration
    • Mongoプラグイン
  • カサンドラフォルダ/

    • カサンドラファイル
    • カサンドラのステータス
    • Cassandra構成

これらのファイルの内容も非常に似ており、たとえばデータベースの名前を変更するだけなのでMongoCassandra.

この2つのフォルダーを比較するにはどうすればよいですか。その結果、ファイルが一方から他方に欠落し(たとえば、 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 に答える