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