여러 디렉터리에서 sha1sum 실행

여러 디렉터리에서 sha1sum 실행

공통 상위 디렉토리를 공유하는 여러 디렉토리가 있습니다. 각 디렉토리에는 일반 파일이 있지만 다른 하위 디렉토리는 없습니다. 이 같은:

top/dir-1
top/dir-1/file-11
top/dir-1/file-12
top/dir-2
top/dir-2/file-21
top/dir-2/file-22
top/dir-3
top/dir-3/file-31
top/dir-3/file-32

sha1sum이 파일을 실행하고 다음 체크섬 파일을 얻고 싶습니다 .

top/dir-1/sha1sum
top/dir-2/sha1sum
top/dir-3/sha1sum

top/dir-1/sha1sum예를 들어 합계 만 포함해야 하는 체크섬은 다음과 같습니다 file-11.file-12

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx file-11
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy file-12

find, sha1sum, cd, for루프 및 하위 쉘과 관련된 여러 명령을 시도했지만 큰 성공을 거두지 못했습니다.

마지막으로: 디렉터리와 파일 모두 이름에 공백이 포함될 수 있으므로 모든 솔루션에서는 이 점을 고려해야 합니다.

어떤 아이디어가 있나요?


편집하다. 나는 마침내 시도했다:

cd top
for i in *; do cd "${i}"; (sha1sum * > sha1sum); cd ..; done

작동하는 것 같지만 이것이 이런 종류의 작업을 수행하는 올바른 방법인지는 여전히 확실하지 않습니다.

답변1

더 좋은 점은 다음과 같습니다.

cd top &&
for i in */; do (cd -- "$i" && sha1sum -- * > sha1sum); done

관련 정보