현재 다음 코드를 사용하여 각 폴더를 해시 파일에 저장합니다.
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/
하거나 새 파일을 생성하고 해당 특정 파일에 대해 sha256sum을 실행하면 make
해당 특정 파일에 대한 sha256sum이 업데이트됩니다.
make
달리기에 대해 자세히 알아보려면 info make
.
파일을 변경하지 않는 경우(새 파일만 추가) 마지막으로 명령을 실행했을 때의 최신 수정 시간과 파일 이름을 기억하고 find
최신 파일만 선택하세요.
find -newer REFERENCE_FILE
...또는 직접 타임스탬프(date(1) DATE STRING 참조)
find -newermt TIME_STAMP