findの検索結果から圧縮ファイル(.tar.gz)を作るLinuxコマンド

Linuxコマンドを勉強したい人向け シェル/bash

この記事は、Linux初心者向けの記事です。
findコマンドで検索した結果、見つけたファイルを圧縮したい

Linuxコマンドを調べる人
「findコマンドで検索した結果、ヒットしたファイルをまとめて圧縮ファイルにしたい。どうすればよいでしょう?」

こんな疑問に答えます。

本記事では、findコマンドの結果をtarコマンドにパイプで直接渡して圧縮ファイルを作るコマンドを紹介し、具体例を示します。

検索&圧縮コマンドとコマンド・オプションの解説

検索&圧縮コマンドとコマンド・オプションの解説

使うコマンドは以下の通りです

find 《好きな検索オプション》 -print0 | tar -zcv -T – –null -f 《圧縮ファイル名》

コマンド・オプションの解説

  • [find] -print0  null(‘\0’)区切りで検索結果を出力します。
  • [tar] -zcv  圧縮ファイル(.tar.gz)にします。
  • [tar] -T -  出力(find検索結果)を対象にします。
  • [tar] –null   null(‘\0’)区切りでファイル名を読み込みます。

以下では、テスト用ファイルの準備から圧縮ファイル取得までの具体例を示します。
 

テストで使うファイルの準備

findテストで使うファイルの準備

以下の手順を、お手元のLinux環境でやってみてください

テスト用のディレクトリを作成・移動してから、
findで検索する対象のファイルを作ります。

$ mkdir test
$ cd test
$ touch {1..10}.txt
$ ls

実行結果は以下の通りです。
[実行結果]

1.txt  10.txt 2.txt  3.txt  4.txt
5.txt  6.txt  7.txt  8.txt  9.txt

findコマンドで検索した結果を圧縮ファイル(.tar.gz)にする

findコマンドで検索した結果を圧縮ファイル(.tar.gz)にする

findコマンドで検索して圧縮するコマンドを実行します。

$ find . -print0 | tar -cvz -T - --null -f /tmp/temp.tar.gz

実行結果は以下の通りです。
[実行結果]

a .
a ./10.txt
a ./9.txt
a ./8.txt
a ./5.txt
a ./4.txt
a ./6.txt
a ./7.txt
a ./3.txt
a ./2.txt
a ./1.txt
a ./10.txt
a ./9.txt
a ./8.txt
a ./5.txt
a ./4.txt
a ./6.txt
a ./7.txt
a ./3.txt
a ./2.txt
a ./1.txt

find結果から作成した圧縮ファイルを確認します。

$ ls -l /tmp/temp.tar.gz
-rw-r--r--  1 user01 group01 264 1 17 21:56 /tmp/temp.tar.gz

$ tar ztvf /tmp/temp.tar.gz
drwxr-xr-x  0 user01 group01       0  1 17 21:52 ./
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./10.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./9.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./8.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./5.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./4.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./6.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./7.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./3.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./2.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./1.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./10.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./9.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./8.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./5.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./4.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./6.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./7.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./3.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./2.txt
-rw-r--r--  0 user01 group01       0  1 17 21:52 ./1.txt

圧縮成功

findで検索した結果から圧縮ファイルができました。

おわりに

findの検索結果から圧縮ファイルを作る方法のおさらい

findの検索結果から圧縮ファイル(.tar.gz)を作るLinuxコマンドを解説しました。

おさらい

find 《好きな検索オプション》 -print0 | tar -zcv -T – –null -f 《圧縮ファイル名》
  • [find] -print0  null(‘\0’)区切りで検索結果を出力します。
  • [tar] -zcv  圧縮ファイル(.tar.gz)にします。
  • [tar] -T -  出力(find検索結果)を対象にします。
  • [tar] –null   null(‘\0’)区切りでファイル名を読み込みます。

今回は以上です。参考になりましたら幸いです。

Blog TOP  Linuxコマンドを勉強したい人向け|Linuxの使い方 記事まとめ

Linux&Linuxコマンドを勉強したい人向けの記事もくじ

用語解説・技術一般

  "UNIXとLINUX"の違いについて解説します
  CUIとGUIの違い・特徴について解説します

サーバリソースを確認するコマンドの使い方

  【Linux】CPU使用率を確認する3つの方法を解説します
  【Linux】topコマンドで,CPU消費の原因を特定する方法
  【Linux】ps実行時に-efオプションを付ける理由について
  【Linux】メモリ使用率を確認する|容量・空きの確認も
  【Linux】ディスク容量を確認する|ディスク容量監視も

ファイル操作に関するコマンドの使い方

  【Linux】ファイルの行数をカウントする方法を解説
  【Linux】文字コード変換ならiconvコマンド1択です
  【Linux】/dev/nullを、エンジニアが使う2つの目的
  【Linux】findのexecオプションの使い方とその注意点
  【Linux】findの結果から圧縮ファイルを作るコマンド
  【Linux】hostsの場所はどこ?→/etc/hostsにあります
  【Linux】touchコマンドで,時刻更新&空ファイル作成

Linux管理者用コマンドの使い方

  【Linux】再起動コマンド(shutdown)の使い方と注意点

よく使う便利なコマンドの使い方

  【Linux】改行なしでechoコマンドを使う時の -nオプション
  【Linux】sleepコマンドの使用例と注意点について解説する
  【Linux】rmコマンドでディレクトリを削除する方法を解説
  【Linux】ファイルを削除するコマンド2選【rm以外もあり】
  【Linux】awkの区切り文字を指定する,-Fオプションを解説
  【Linux】sedで文字列の置換をするeオプションを解説する
  【Linux】dateコマンドのフォーマットとその便利な使い方
  【Linux】大文字から小文字に変換する方法【小文字から大文字も】

シェルの便利機能

  【Linux】コマンド履歴を検索する【Ctrl+r】