ファイルを再チェックするときにハッシュファイルを更新する

ファイルを再チェックするときにハッシュファイルを更新する

私は現在、次のコードを使用して各フォルダをハッシュファイルに保存しています

find folder/ -type f -exec sha256sum {} > checksumfolder.txt \;

その txt ファイルをチェック/再計算して再作成する代わりに、古い txt ファイルを更新して、ハッシュのない新しく追加されたファイルを追加することは可能でしょうか?

答え1

Makefile次の内容の を作成します。

SHAS := $(patsubst folder/%, sha/%, $(shell find folder/ -type f))

all: sha $(SHAS) checksumfolder.txt

sha:
    mkdir sha

sha/%: folder/%
    sha256sum $< > $@

checksumfolder.txt: $(SHAS)
    cat $(SHAS) > checksumfolder.txt

makeの親ディレクトリ内でを実行すると、内の各ファイルの sha256sum を含むfolder/新しいディレクトリが作成されます。最後に、すべてのファイルを に連結します。sha/folder/checksumfolder.txt

make2 回目に実行すると何も実行されません。

ファイルに触れるかfolder/、新しいファイルを作成して実行すると、makeこの特定のファイルの sha256sum が更新されます。

make実行の詳細については、 を参照してくださいinfo make


ファイルを変更しない(新しいファイルを追加するだけ)場合は、コマンドを最後に実行したときの最新の変更時刻のファイル名を覚えておきfind、次のようにして新しいファイルのみを選択できます。

find -newer REFERENCE_FILE

…または直接タイムスタンプ(date(1) DATE STRINGを参照)

find -newermt TIME_STAMP

関連情報