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

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

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

목표는 모든 dm4를 하나의 폴더에 두고 폴더 B에 tbz 파일이 있는 dm4가 누락되지 않았는지 확인하는 것입니다. 그러나 폴더 B에서 A로 누락된 124개의 dm4 파일을 모두 복사하면 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. 파일을 실행합니다.

관련 정보