.tbz로 변환하거나 다른 방법을 사용하여 차이점을 찾으세요.

.tbz로 변환하거나 다른 방법을 사용하여 차이점을 찾으세요.

두 개의 폴더가 있습니다. 폴더 A - 총 1786개의 dm4 파일이 있습니다. 폴더 B - 총 2131 tbz(A 및 B 폴더에서 사용 가능한 dm4의 아카이브 파일) 파일과 폴더 A 문서에 없는 124 dm4가 있습니다.

목표는 모든 dm4를 하나의 폴더에 넣고 폴더 B에 tbz 파일이 포함된 dm4가 누락되지 않았는지 확인하는 것입니다. 하지만 누락된 124개의 dm4 파일을 모두 폴더 B에서 A로 복사하면 1910개의 DM4 파일이 추가됩니다. 그러나 내 폴더 B에는 2131TBZ가 있는 것으로 표시됩니다. 이는 폴더 b에 남아 있는 221개의 dm4 파일/tbz 파일의 이름을 알아야 하므로 해당 파일이 내 dm4 목록에서 누락되었음을 알 수 있습니다.

이 상황에서 누락된 dm4s/tbz 파일을 찾는 가장 빠른 방법은 무엇입니까?

답변1

제가 이해했는지 확인하기 위해 이 말이 맞나요?

2131개의 .tbz 파일이 있고 각 파일에는 해당 .dm4(예: example-file-09.tbz example-file-09.dm4)가 있어야 하지만 해당 dm4 파일이 많이 누락되어 어떤 파일인지 찾아야 합니다.

이것이 맞다고 가정하면 작동할 것입니다(파일 이름에 공백이 없다고 가정).

dm4_files="$(find A -name '*.dm4')"
for file in $(find B -name '*.tbz'); do 
  # || is a logical or operator; bash will only execute the right side if the left side fails (returns a non-zero exit code)
  echo -e "$dm4_files" | grep -q "$(basename $file .tbz).dm4" || echo "Missing $(basename $file .tbz).dm4"
done

편집: 주석 형식이 좋지 않아 실행 지침을 추가했습니다.

터미널에서 실행:

  1. 위의 A와 B를 관련 디렉터리의 전체 경로로 변경합니다(또는 이 두 디렉터리가 포함된 디렉터리로 cd).
  2. 붙여넣기 명령

스크립트에서 실행:

  1. A와 B가 있는 디렉토리의 check-dm4.sh라는 파일에 명령을 넣으십시오(.sh 접미사는 아무 작업도 수행하지 않지만 쉘 스크립트에서는 일반적입니다).
  2. 파일 상단(첫 번째 줄)에 다음 줄을 삽입합니다. #!/bin/bash
  3. 파일을 실행 파일로 표시합니다(chmod +x check-dm4.sh 또는 마우스 오른쪽 버튼 클릭 -> 속성/배포에서 부르는 이름) 4. 파일을 실행합니다.

관련 정보