여러 부분으로 구성된 rar 아카이브를 찾고, 디렉토리로 추출하고, 모두 성공하면 삭제하는 방법

여러 부분으로 구성된 rar 아카이브를 찾고, 디렉토리로 추출하고, 모두 성공하면 삭제하는 방법

여러 부분으로 구성된 아카이브가 포함된 수백 개의 폴더가 있습니다.

-FOLDER.1
    file.rar
    file.r00
    file.r01
    file.r02
-FOLDER.2
    file.rar
    file.r00
    file.r01

아래 코드를 사용하여 해당 폴더로 추출하고 추출 성공 후 삭제했습니다.

flock -n locked -c "find . -name '*.rar' -execdir unrar e -o- {} \; -execdir rm {} \; && find . -name '*.r[:0-9:][:0-9:]' -exec rm {} \;"

질문문제가 발생하면 다음과 같이 말하세요.

  • 파일의 일부가 손상되었습니다.
  • 파일이 아직 업로드되지 않았습니다.

이 스크립트여러 부분 삭제추출에 실패하더라도.추출이 성공하면 rar 파일과 부분이 삭제되도록 이 스크립트를 어떻게 개선할 수 있습니까? 나는 이것을 알아 내려고 아침 내내 보냈지 만 지금까지 성공하지 못했습니다.

답변1

이러한 명령은 명령 결과 rm에 따라 달라져야 하며 , 귀하의 예에서는 무슨 일이 일어나든 순서대로 실행됩니다.unrar

따라서 다음과 같이 시도해 보십시오(먼저 테스트 디렉토리에서!).

flock -n locked -c "find . -name '*.rar' -print0 | xargs -0 -I FILE sh -c \"unrar e -o- FILE && rm FILE `basename FILE .rar`.r[:digit:][:digit:]\" "

rm그러면 이 부분은 명령이 성공적으로 완료된 경우에만 실행됩니다 .unrar

파일 이름에 공백이 포함된 경우 추가 따옴표가 필요합니다.

관련 정보