2013-02-08 2 views
4

디렉토리 및 해당 하위 디렉토리에서 찾을 수있는 모든 .jar 파일에 대해 체크섬을 수행하려고합니다. 그런 다음 체크섬 값이있는 파일 이름을 파일로 인쇄하십시오.리눅스에서 찾기 명령의 결과 중 md5sum을 인쇄하십시오.

이것은 내가 가지고있는 것입니다.

md5sum | find -name *.jar >result.txt 

저는 개별적으로 작동하는 두 개의 명령을 결합하려고합니다.

도움을 주시면 감사하겠습니다.

+0

해시 뎁이 유용 할 수도 있습니다. http://md5deep.sourceforge.net/ – djeikyb

답변

8

당신은 각 파일에 명령을 실행하기 위해이 같은 것을 사용할 수 있습니다 (! 내 시스템 관리자에게 감사)

find . -name "*.jar" -exec md5sum {} \; >result 
+0

고맙습니다. 완벽하게 작동했습니다. 추가 사항, 전체 폴더 경로가 아닌 파일에 파일 이름 만 쓰는 방법. –

+0

@JamesMclaren 예를 들어'-printf "% f \ n"를 추가하면 파일 이름 만 인쇄되지만'md5sum'은 전체 경로가 필요하므로 작동하지 않을 것이라고 생각하면 명령을 실행 한 후에 경로를 제거 할 수 있습니다 'sed' 또는'awk' – iabdalkader

1

이것은 또한 재귀 적으로 현재의 모든 디렉토리에있는 파일 또는 하위 디렉토리를 해시 작동합니다 :

md5sum $(find . -name '*.jar') > result.txt 

위의 내용은 경로를 포함하지 않고 파일 이름 앞에 "./"를 붙입니다.

-exec의 제안을 mux에서 사용하면 파일 이름에 "*"가 붙습니다 (다시 경로가 없음).

나열된 파일 순서도 두 파일간에 차이가 있지만 필자는 스크립팅에 대한 완전한 멍청한 반응을 보였으므로 정확히 말하지는 않습니다.

편집 : 위와 같이 HPC에서 원격으로 실행 한 경험에 근거한 앞뒤 경로는 잊어 버리십시오. 난 그냥 내 로컬 Windows 상자에 cygwin을 사용하여 내 시스템 관리자의 제안을 실행하고 "*. /"prepended 전체 경로를 가지고. 비교가 더 쉬워 지도록 일관성없는 경로를 덤프하고 선행하기 위해 다른 방법을 사용해야 할 것입니다. 요컨대, YMMV.