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

Я попробовал все, что я знаю и десятки старых сообщений форума на такого рода вещи... ничто не работает.

Я загрузил резервный каталог Wordpress на веб-сервер после того, как существующий был непреднамеренно удален.

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

В лучшем случае методы, которые я в настоящее время использую, распаковывают все каталоги/подкаталоги Wordpress, но ВСЕ файлы в них остаются сжатыми с ".gz" расширением файла.

существует больше чем 500 файлов в подпапках для выполнения этой задачи на.

Кто-то может предоставить мне простой и прямой ответ о том, как достигнуть этой задачи?

Я могу получить часть пути со следующим кодом, однако, это не пойдет рекурсивно в не сжатые подпапки, ища больше ".gz" файлов для распаковки (примечание... папки/подпапки уже распаковываются, но не файлы в них).

для f в wordpress/.gz; сделайте gunzip $f; сделанный*

1
задан 5 October 2018 в 16:52

4 ответа

Можно достигнуть этого с find (См.: страница справочника) и -exec флаг. поскольку архивы tar следующая строка добьются цели:

find wordpress/ -type f -name *.tar.gz -exec tar -xf {} \;

Для gunzip можно использовать:

find wordpress/ -type f -name *.gz -exec gunzip -k {} \;

Если существуют оба типы файлов, необходимо сделать это довольно отличающееся немного, первый показ gunzip без -k (сохраните файл), флаг и затем выполняет строку находки для файлов tar также крошечный измененный бит:

find wordpress/ -type f -name *.gz -exec gunzip {} \;
find wordpress/ -type f -name *.tar -exec tar -xf {} \;
1
ответ дан 7 December 2019 в 13:21

для добавления к ответу, я отметил, поскольку корректный для меня... вот является код другом, отправленным, чтобы я скопировал и его инструкции.

из public_html/каталога я попробовал обе из следующих опций кода.

для f в wordpress/.gz; сделайте gunzip $f; сделанный*

вышеупомянутое означало бы что для спуска больше чем одного подуровня, я должен буду ввести его много раз путем добавления большего количества подкаталогов, например, Wordpress/подкаталога / *.gz, wordpress/subdirectory/subdirectory/... и т.д.

Самая простая опция - этот ниже... Протестируйте сначала с

найдите, что Wordpress / - называет "*.gz" - должностное лицо ls - люфтганза {} \;

ls - люфтганза не повреждается, что-либо кроме Вас видит, какие файлы она смешала бы. Если файлы являются корректными, изменяют ls - люфтганза к gunzip.

найдите, что Wordpress / - называет "*.gz" - должностное лицо gunzip {} \;

1
ответ дан 7 December 2019 в 13:21

Читать man find, man xargs, и сделайте что-то вроде этого:

find wordpress -type f -iname '*.gz' -print0 |\
    xargs -0 -r -n 1 gunzip

Для тестирования, замены gunzip с echo gunzip

0
ответ дан 7 December 2019 в 13:21

Добавить к ответу @videonauth:

Если вы хотите распаковать файлы .tar.gz в подпапках в ту же подпапку, а не в корневую папку, где вы запускаете команду , вы можете использовать параметр -execdir:

find wordpress/ -type f -name *.tar.gz -execdir tar -xf {} \;
1
ответ дан 21 May 2020 в 16:13

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

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