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

実行したいことは、findコマンドが見つけたすべてのファイルを含む gzip 圧縮された tar アーカイブを作成することだと想定しています (各ファイルを個別に gzip 圧縮するのではなく)。

上記のコマンドにはいくつか問題があります。

  • gzip -l既存のアーカイブを受け入れて内容を印刷する
  • gzip単体ではtarアーカイブ(複数のファイルを格納するコンテナ)は生成されず、各ファイルを個別に圧縮するだけです。

おそらく次のようなものが必要です:

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

関連情報