2

私が探しているのは、自動化された方法で 2 つの md5 ファイル (それらa.md5を と と呼びましょう) の内容をマージする方法です。b.md5 理想的には、bash スクリプトからこれを実行したいと考えていますが、別の方法を検討したいと考えています。

私は次のようにして生成a.md5します:

cd a && find . -type f -print0 | xargs -0 md5sum > ../a.md5

フォルダーaには、多数のファイルとディレクトリが含まれています。別のフォルダからb、同様に生成しb.md5ます。
以下は、.md5 ファイルの内容のスニペットです。

8f56e29ec16b2d59949c4a95b5607574  ./usr/share/man/man1/infocmp.1.gz
f245d527f4dd1fabab719b64414dccf7  ./usr/share/man/man1/clear.1.gz
c0ae88d29fc406c937c3f64511fa1ab0  ./usr/share/man/man1/modeline2fb.1
3b83017b7acd38a553c3132a0ccb1fd8  ./usr/share/man/man1/fbset.1
83530bf6b1a19ca69022536e7ca810b5  ./usr/share/man/man1/sqlite3.1

後で、 folderaに新しいファイル (ログ ファイルなど) が追加され、 folder で上書きされるため、フォルダーとbのすべての一意のファイルが存在し、すべての競合について、からのファイルがファイルに置き換えられます。から。abab

同様に、a.md5andの内容をマージしb.md5て、衝突が発生した場合に特定のファイルのb.md5値を置き換えるようにしたいと考えています。a.md5ただし、マージの前に結果に含めたくないファイルが追加されているため、新しい md5 ファイルを単純に再計算することはできません。

上記のニーズにいくつかのコンテキストを与えるためのファイルノートとして、aそれぞれbが組み込みLinuxファイルシステムのコンテンツです。の内容はaクリーンなファイル システムにプログラムされ、 の内容はb実行時にファイル システムにアンパックされます。md5 の目的は、コンテンツがエラーなしで展開されたことを確認し、実行時にさまざまなことによって生成されるファイルを無視することです。PCでmd5を生成md5sum -cし、組み込みシステムで実行します。

上記のように、bash スクリプトが理想的ですが、プロセスを自動化できる限り、他の提案も受け付けています。

4

2 に答える 2

1

考えられる 1 つの方法:sort -k2リストと使用の両方を使用join -1 2 -2 2して、a.md5 と b.md5 をマージすることができます。最後に、両方の場所に存在するファイルの重複情報を削除する必要があります。削除sedできるはずです。

于 2012-10-05T19:17:54.070 に答える
0

これはどう:

cat a.md5 b.md5|sort|uniq
于 2012-10-09T19:30:19.610 に答える