find -exec와 함께 pv 사용

find -exec와 함께 pv 사용

다음 명령을 사용하여 ~700GiB 백업 파일을 확인했습니다.

$ find -type f -exec md5sum {} + | sort > ~/checksums

pv이 작업에는 많은 시간이 걸리므로 명령에 통합하여 진행 상황을 표시하고 싶습니다 .

나는 이것을 할 수 있다:

$ find -type f -exec pv {} + | md5sum

그러나 모든 파일을 연결하고 하나의 체크섬만 생성합니다.

그렇다면 이를 포함 pv하고 마지막에 체크섬으로 가득 찬 텍스트 파일을 어떻게 얻을 수 있습니까?

답변1

그런 파이프를 사용할 수 없기 때문에 첫 번째 명령은 전혀 실행되어서는 안 됩니다 -exec(분명히원래 질문).

대신에:

find . -type f -exec md5sum {} + | sort -o ~/checksums

또는 pv,

find . -type f -exec md5sum {} + | pv | sort -o ~/checksums

두 경우 모두 md5sum호출은 가능한 한 많은 경로 이름을 사용하여 일괄 처리됩니다. sort출력 find(예: 의 출력 md5sum)을 가져와서 지정된 파일 이름으로 정렬합니다. 두 번째 변형은 및 pv사이에 추가로 삽입합니다 .findsort

당신은 -exec pv {} | md5sum사용할 수 없습니다개인 문서-exec파이프는 각 파일에 대해 호출하는 인라인 셸 스크립트에 포함되어야 하기 때문입니다 . 그러나 올바른 -exec sh -c 'pv "$1" | md5sum' sh {} \;것조차도 생성된 출력에서 ​​파일 이름을 삭제하므로 md5sum작동하지 않습니다. 이 pv유틸리티는 cat.

관련 정보