我目前使用以下程式碼將每個資料夾保存在哈希文件上
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