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’)区切りでファイル名を読み込みます。

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

  • 給付を貰いながら講座を受講して、Linux技術者認定(LPIC-1&2)を短期で取得しませんか?技術力の認定があれば、転職・就職・昇進に有利です。もちろん実務能力も向上します。無料の資料請求はこちら(Linuxアカデミー)   の右上から。
 LPIC資格対策コース(LeveI1):学習時間は15時間  LPIC2資格対策コース(LeveI2):学習時間は25時間  Linuxセキュリティコースもあります:学習時間は25時間  会社員なら、教育訓練給付制度の給付対象となる講座です。  資格試験の内容、学習プラン、講座に関する資料を無料送付。
Linux技術者認定(LPIC Level1&Level2)

キャンペーン情報:無料で1,000円プレゼント Linuxアカデミーでは、教室でカウンセリングを受けた方を対象にスターバックスカード1,000円分の無料プレゼントキャンペーン中です。この機会にぜひどうぞ! » LPIC-1&2 対策コースの詳細はこちら » LinuCライセンスを独学で取得したい方はこちら

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】


今、ITエンジニアは前例のない売り手市場です

ITエンジニアは前例のない売り手市場、転職なら今

現在のエンジニアの求人数と求人倍率をご存知ですか?

直近(※)のIT業界全体の求人倍率は7.85倍です。

つまり 企業が8回 IT人材の求人を出しても、 1人しかエントリーがない 状況です。

エンジニア側が企業を選ぶ なら、今がチャンスです。

※転職サイトdodaが毎月発表している転職求人倍率。
 2019年12月9日発表/集計対象期間は2019年11月1日〜30日

詳しくはこちら


人気記事【今年の抱負】退職しオープン&フリー&シンプルに生きていく【失敗しない働き方改革の本質】