현재 다음 코드를 사용하여 각 폴더를 해시 파일에 저장하고 있습니다.
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
두 번째 실행 시에는 아무 작업도 수행되지 않습니다.
파일을 터치하거나 folder/
새 파일을 만들고 실행하면 make
이 특정 파일의 sha256sum이 업데이트됩니다.
make
run 에 대해 자세히 알아보세요 info make
.
파일을 전혀 변경하지 않는 경우(새 파일만 추가) 마지막으로 명령을 실행했을 때 가장 최근에 수정한 시간의 파일 이름을 기억하고 다음을 find
사용하여 최신 파일만 선택할 수 있습니다.
find -newer REFERENCE_FILE
… 또는 직접 타임스탬프(date(1) DATE STRING 참조)
find -newermt TIME_STAMP