1

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

data
|- 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

data
|- 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: https://unix.stackexchange.com/questions/115863/delete-files-and-directories-by-their-names-no-such-file-or-directory/115869#115869

    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 06: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 07:17
  • I think he is in data because he mentions "parent directory" data/. – thecarpy Apr 24 '19 at 13:01

1 Answers1

0

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 {} +
pLumo
  • 22,565