резервное копирование сжимать tar каждый каталог

Я ищу метод сканирования каталога (не рекурсивный) и tar с использованием имени исходной папки, а затем удалить папку (поэтому у меня будет только сжатая папка). У кого есть команда для этого?

2
задан 22 September 2011 в 13:25

3 ответа

Я могу предложить следующий однострочный (предположим, что текущий каталог является родителем каталогов для резервного копирования):

for f in */; do tar -czf "${f%/}.tar.gz" "$f"; rm -rf "$f"; done

Чтобы изменить имя каждой папки в нижнем регистре и заменить пробелы с помощью подчеркивания:

for f in */; do f="${f// /_}"; f="${f,,}"; tar -czf "${f%/}.tar.gz" "$f" && rm -rf "$f"; done_
3
ответ дан 25 May 2018 в 18:41
  • 1
    find в сочетании с опцией -maxdepth 1 также отображает скрытые каталоги; shopt -s dotglob сделает это тоже для этого for – Lekensteyn 22 September 2011 в 14:37
  • 2
    благодаря! было полезно, есть ли способ конвертировать имена в «безопасное имя», (т. е. My Folder = my_folder) удалить пробелы и сделать строчные буквы каждого tar? – Amir Ashkenazi 23 September 2011 в 14:37
  • 3
    Я отредактировал свой ответ для этого вашего нового запроса. Кстати, вы должны удалить этот ответ (на самом деле это не ответ) и опубликовать его в качестве комментария к моему ответу. – enzotib 23 September 2011 в 14:46

Я могу предложить следующий однострочный (предположим, что текущий каталог является родителем каталогов для резервного копирования):

for f in */; do tar -czf "${f%/}.tar.gz" "$f"; rm -rf "$f"; done

Чтобы изменить имя каждой папки в нижнем регистре и заменить пробелы с помощью подчеркивания:

for f in */; do f="${f// /_}"; f="${f,,}"; tar -czf "${f%/}.tar.gz" "$f" && rm -rf "$f"; done_
3
ответ дан 25 July 2018 в 21:18

Я могу предложить следующий однострочный (предположим, что текущий каталог является родителем каталогов для резервного копирования):

for f in */; do tar -czf "${f%/}.tar.gz" "$f"; rm -rf "$f"; done

Чтобы изменить имя каждой папки в нижнем регистре и заменить пробелы с помощью подчеркивания:

for f in */; do f="${f// /_}"; f="${f,,}"; tar -czf "${f%/}.tar.gz" "$f" && rm -rf "$f"; done_
3
ответ дан 2 August 2018 в 02:57

Другие вопросы по тегам:

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