0

I have hundreds of folders with multi part archives inside them.

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

I am using the code below to extract them inside their respective folders and to remove them upon successful extraction,

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

The problem is if something goes wrong, lets say;

  • One of the parts of the archive is corrupted,
  • Files are not uploaded yet

This script deletes the multi parts even though extracting is not successful. How can improve this script so it deletes rar files and parts if extraction is successful. I spend my whole morning to figure this out but so far no success.

2
  • how do you expect the event "Files are not uploaded yet" to be detected ? Feb 8, 2018 at 16:14
  • I am depending on successful extraction on that side.
    – user611811
    Feb 8, 2018 at 16:20

1 Answer 1

0

The rm commands must be dependent on the result of the unrar command where in your example they are all run sequentially whatever happens.

So try something like that instead (on a test directory first!):

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:]\" "

Then the rmpart is executed only if the unrarcommand finished successfully.

You will need extra quotes if your file names have spaces.

2
  • Sorry but I am strugling to understand this; Extraction went OK, deleted .rar file but the rest stays. How can I delete the rest of the files "test_file.r[:0-9:]" rm: cannot remove './test_file.rar.r[:0-9:]': No such file or directory
    – user611811
    Feb 9, 2018 at 7:19
  • I have edited my answer, it should work for all files from .r00 to .r99 Feb 9, 2018 at 14:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .