Как объединить команду find с gzip?

Как объединить команду find с gzip?

Я пытаюсь сжать определенные файлы:

find /media/mount/storage -newermt "2013-08-01 00:00:00" -path '*/*wind.txt' -print0 | xargs -0 gzip -l >> file_system.tar.gz

но я получаю следующую ошибку:

gzip: /media/mount/storage/20130811120802_RHI1/20130811121000_wind.txt: not in gzip format

Где я делаю ошибку?

ОТРЕДАКТИРОВАНО: с ответом, написанным chronitis, иногда tar воссоздается, вот вывод:

 /media/mount/storage/File system/20130505082135_CT1/20130505090000_wind.txt
 /media/mount/storage/File system/20130505085301_CT1/20130505090000_wind.txt
 tar: Removing leading `/' from member names <- the size of the tar became zero
 /media/mount/storageFile system/20130505085301_CT1/20130505091000_wind.txt
 /media/mount/storageFile system/20130505085301_CT1/20130505092000_wind.txt

решение1

Я предполагаю, что вы хотите создать сжатый с помощью gzip tar-архив, содержащий все файлы, findкоторые находит команда (а не сжимать с помощью gzip каждый из этих файлов по отдельности).

С приведенной выше командой связано несколько проблем:

  • gzip -lпринимает существующий архив и распечатывает его содержимое
  • gzipсам по себе не создает tar-архивы (контейнер для нескольких файлов), а просто сжимает каждый файл по отдельности

Вероятно, вы хотите что-то вроде:

find [conditions] -print0 | xargs -0 tar -zcf filesystem.tar.gz

Связанный контент