私は現在、次のコードを使用して各フォルダをハッシュファイルに保存しています
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
make
2 回目に実行すると何も実行されません。
ファイルに触れるかfolder/
、新しいファイルを作成して実行すると、make
この特定のファイルの sha256sum が更新されます。
make
実行の詳細については、 を参照してくださいinfo make
。
ファイルを変更しない(新しいファイルを追加するだけ)場合は、コマンドを最後に実行したときの最新の変更時刻のファイル名を覚えておきfind
、次のようにして新しいファイルのみを選択できます。
find -newer REFERENCE_FILE
…または直接タイムスタンプ(date(1) DATE STRINGを参照)
find -newermt TIME_STAMP