重新檢查文件時更新哈希文件

重新檢查文件時更新哈希文件

我目前使用以下程式碼將每個資料夾保存在哈希文件上

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在 的父目錄中執行時folder/,將建立一個新sha/目錄,其中包含 中每個檔案的 sha256sum folder/。最後我們將所有文件連接到checksumfolder.txt.

當你make第二次運行時,什麼也不會做。

當您觸摸一個檔案folder/或建立新檔案並執行該特定檔案的 sha256sum 時make,該特定檔案的 sha256sum 就會更新。

要了解有關make運行的更多資訊info make


如果您從不更改檔案(僅新增檔案),則只需記住上次執行命令時最新修改時間的檔案名find,然後只選擇較新的檔案:

find -newer REFERENCE_FILE

...或直接時間戳記(參見 date(1) DATE STRING)

find -newermt TIME_STAMP

相關內容