Сжатие всех каталогов в текущей папке

#shell #scripting

#оболочка #сценарии

Вопрос:

Я пытаюсь заархивировать все папки в текущем каталоге.

Результатом должно быть то, что каждая папка становится архивом. Я имею в виду, что архивы должны иметь ту же структуру, что и папки.

Это сценарий, который я написал:

 find ~/data_archive_dir 
 -maxdepth 1 
 -type d 
 ! -iname "*.zip" 
 ! -iname "*.bz2" 
 ! -iname "*.gz" 
 -exec zip -r "{}" "{}" ;
  

но получите старые папки и архивы с тем же именем и файлами с полным путем внутри них. что я делаю не так?

Ответ №1:

     for l_dir in ~/data_archive_dir/*/
do
    pushd ~/data_archive_dir/
    zip -r $(basename "${l_dir}").zip $(basename "${l_dir}")
    popd
    rm -r "${l_dir}"
done
  

это то, что я написал.