Сжатие многих папок

У меня есть каталог, содержащий множество папок, а также сжатые файлы. Мне нужно сжать папки, которые еще не так (tar -cvzf ...), но не имеют опыта работы со скриптами sh. Может кто-нибудь помочь мне написать такой сценарий, пожалуйста?

2
задан 03.05.2020, 03:26

1 ответ

Вам не нужен сценарий; достаточно следующей командной строки:

for dir in */; do tar cvzf "${dir%*/}".tar.gz "$dir"/; done
0
ответ дан 03.05.2020, 03:26
  • 1
    @bigTree, выполненный от Вашего терминала следующие команды для наблюдения различия: for dir in */; do echo "${dir%*/}"; done и for dir in */; do echo "$dir"; done. – Tony 03.05.2020, 03:27
  • 2
    @RaduRДѓdeanu я должен сжать папки, которые уже являются не так – Fred 03.05.2020, 03:27
  • 3
    Это принимает во внимание, что уже существуют смолившие каталоги в папке? – Tony 03.05.2020, 03:27
  • 4
    @bigTree ${dir%*/} совпадает с $dir, кроме того, если концы значения с /, та наклонная черта опущена в расширении. * там бессмысленно и не имеет никакого значения, таким образом, это могло бы также быть записано ${dir%/} вместо этого для предотвращения беспорядка. Таким образом, если $dir расширится до foo/, то ${dir%/} расширится до foo. – Stephen Thomas 03.05.2020, 03:28
  • 5
    Да он сделал, читает вопрос снова. – Fred 03.05.2020, 03:28

Теги

Похожие вопросы