여러 부분으로 구성된 아카이브가 포함된 수백 개의 폴더가 있습니다.
-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
파일 이름에 공백이 포함된 경우 추가 따옴표가 필요합니다.