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

80

Как я могу заархивировать в каталог назначения, отличный от текущего?

Это не сработало:

gunzip *.gz /putthemhere/
Скотт Шреттер
источник

Ответы:

104

Попросить gunzipвывести на стандартный вывод и перенаправить в файл в этом каталоге:

gunzip -c file.gz > /THERE/file

zcatэто ярлык для gunzip -c.

Если вы хотите разархивировать несколько файлов, переберите все файлы:

for f in *.gz; do
  STEM=$(basename "${f}" .gz)
  gunzip -c "${f}" > /THERE/"${STEM}"
done

(здесь basenameиспользуется для получения части имени файла без расширения)

Бенджамин Банье
источник
3
Создает файл, но не сохраняет владельца файла, прав доступа и т. Д. Это может быть как хорошим, так и плохим, в зависимости от конкретной ситуации.
Крис Джонсон
2

Если вам нужно извлечь один файл и записать его в корневой каталог, используйте sudo dd:

zcat filename.conf.gz | sudo tee /etc/filename.conf >/dev/null

Если файл поступает из удаленного источника (например, ssh, curl https и т. Д.), Вы можете сделать это следующим образом:

ssh remoteserver cat filename.conf.gz | zcat | sudo tee /etc/filename.conf >/dev/null

(Обратите внимание, что эти примеры работают только для одного файла, в отличие от примера * .gz, который представляет собой все сжатые файлы в каталоге.)

Джеймисон Беккер
источник
Для написания с привилегиями root sudo tee $filename >/dev/nullнемного более идиоматичен, чем использование dd.
Дколс
1

Вы можете попробовать с помощью> перенаправить результат в нужное место.

jangelfdez
источник