이 명령을 사용하여 재귀적으로 생성하고 있습니다.SHA-512 해시디렉터리 계층 구조의 각 파일에 대해 다음을 수행합니다.
find . -type f -exec openssl sha512 {} \;
해시를 생성하기 전에 파일을 사전순으로 정렬하고 싶습니다.
다음과 같이 사용할 수 있습니다 sort
.
find . -type f | sort
하지만 정렬된 파일 목록을 openssl
.
find . -type f | sort | openssl sha512
그러나 이는 전체 출력의 단일 해시를 생성하는 sort
반면 저는 각 개별 파일의 해시를 원합니다.
find
일부 bash 버전에는 옵션 -s
(" find
사전순으로 탐색된 파일 계층 구조 발생")이 포함되어 있지만 내 find
.
도와주셔서 감사합니다!
답변1
xargs
당신은 당신이 원하는 것을 얻기 위해 그것을 사용할 수 있습니다 .
find . -type f -print0 | sort -z | xargs -0 -n1 openssl sha512
이 -n1
옵션은 xargs가 명령에 하나의 인수만 허용하도록 지시합니다 openssl
. -print0
및 옵션은 파일 이름에 "문제" 문자(예: 삽입된 개행 문자)가 있는 경우 -z
파이프가 끊어지는 것을 방지합니다 .-0
답변2
다음과 같이 xargs -L 1 openssl sha512에 파이프합니다.
find . -type f | sort | xargs -L 1 openssl sha512
xargs는 출력을 가져와 프로그램의 명령줄로 실행합니다. "-L 1"은 한 번에 한 줄로 제한합니다.