에 많은 파일이 있다고 가정합니다 /tmp/
.
나는한다
find . -type f | xargs -iFILES
그리고 md5sum
각 파일에서을 수행하고 이름은 같지만 .md5
확장자 가있는 파일로 출력 하고 싶습니다 .
find . -type f | xargs -iFILES md5sum FILES > FILES.md5
find 명령으로 찾은 각 파일에 대해 md5 파일을 작성해야합니다. 대신 모든 파일의 체크섬을 사용하여 디스크에 단일 FILES.md5 파일을 만듭니다.
FILES가 FILES 리터럴 문자열이 아닌 현재 파일 이름을 나타내는 md5sum 명령에 대해 어떻게 말합니까?
답변
출력을 md5sum
파일 로 보내고 싶다고 말하는 방법이 필요 합니다. 이후 find
(또는 xargs
)이 기능이 내장되어 있고,하지 않는 md5sum
유일한 표준 출력에 인쇄하는 방법을 알고, 쉘 리디렉션은 가장 간단한 방법입니다.
일반적인 이유로는 명령이 다른 이유로 작동하지 않습니다.의 출력 형식은 find
의 입력 형식이 아니며 xargs
공백 또는 또는 파일 이름이 포함 된 파일 이름과 다릅니다 \"'
. find -exec
대신 사용하십시오 .
find . -type f -exec sh -c 'md5sum "$0" >"$0.md5"' {} \;
답변
IO 리디렉션을 처리하려면 서브 쉘을 사용해야합니다.
find . -type f | xargs -iFILES sh -c 'md5sum FILES > FILES.md5'
답변
GNU Parallel을 사용하면 다음을 수행 할 수 있습니다.
find . -type f | parallel md5sum {} \> {}.md5
md5sum을 병렬로 실행하면 다음과 같은 파일이 추가로 제공됩니다.
My brother's 12" records.txt
명령이 충돌하지 않습니다. 자세한 내용은 소개 동영상을 참조하십시오 . http://www.youtube.com/watch?v=OpaiGYxkSuQ