重新检查文件时更新哈希文件

重新检查文件时更新哈希文件

我目前使用以下代码将每个文件夹保存在哈希文件上

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

相关内容