Trying to zip a backup directories inside a parent directory data/ which looks like this

|- 2019-04-01
    |- data.gz
    |- data2.gz
|- 2019-04-09
    |- data.gz
    |- data2.gz

I would like to zip the timestamped directories in same named zips and delete the unzipped directories

|- 2019-04-01.zip
|- 2019-04-09.zip

I have tried this find command to zip them but I'm having a no such file error find . -type d -execdir zip -r {}.zip {} ';' What am I doing wrong on this command?

  • I cannot reproduce with the command you mentioned. However, this looks like: unix.stackexchange.com/questions/115863/… You should do the -execdir and then do -delete, note that -execdir is probably useless, use -exec instead, since you appear to be in data/ already ? – thecarpy Apr 24 '19 at 6:23
  • 1
    @thecarpy Why you think he is in data dir? -execdir is fine here. @spy-killer Your command works, but you should use -mindepth 2 -maxdepth 2 to not also zip data and . folders. – pLumo Apr 24 '19 at 7:17
  • I think he is in data because he mentions "parent directory" data/. – thecarpy Apr 24 '19 at 13:01

Your command works fine, but it also zips data and . directory.
Use -mindepth and -maxdepth options.

To delete the directories afterwards, use -execdir rm -Rf {} +:

find data -mindepth 1 -maxdepth 1 -execdir zip -r {}.zip {} \; -execdir rm -Rf {} +

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.