Например имеем в текущем каталоге папки 001,002,003
На выходе надо иметь три архива 001.tar.gz, 002.tar.gz, 003.tar.gz
Ответ
может не самое элегантное, но хорошо работающее решение:
find . -type d -maxdepth 1 -mindepth 1| xargs -i tar -cvzf {}.tar.gz {}
объясняю что происходит:
1)
find . -type d -maxdepth 1 -mindepth 1
find — утилита для поиска и обхода файлов и директорий
. — текущий каталог
-type d — ключ для обхода только директрий в текущем каталоге
-maxdepth 1 -mindepth 1 — глубина обхода после этого на stdout у нас подаются адреса каталогов которые нужно архивировать
2) | xargs -i tar -cvzf {}.tar.gz {}
| — конвейер. переваёт вывод поманды в следующую команду
xargs — утилита, помогающая формировать список аргументов
-i — ключ,который говорит что мы будем что-то подставлять
tar -cvzf {}.tar.gz {} — команда для архивации каталога по gz(вместо {} подставляется имя каталога, сформированное утилитой find).
-{}.tar.gz — имя архива(каталог+"tar.gz") вторые {} — что директория для архивации
после этого в текущем каталоге у тебя появятся нужные тебе архивы , которые ты запросто можешь переместить в нужную тебе директорию командой:
find . -type f| grep tar.gz | xargs -i mv {} нужная/папка
Комментариев нет:
Отправить комментарий