アーカイブを展開せずに含まれるファイルを確認するには、ZIPファイルには unzip -l、TARアーカイブには tar -tf というターミナルの一覧表示コマンドを使います。このガイドでは、アーカイブ内のファイルを展開せずに、ファイル名、フォルダ構成、確認できる詳細情報を調べる方法を説明します。

Finderからターミナルを使ってZIPファイルを一覧表示する

ZIPファイルには、まず unzip -l を使います。小文字の -l オプションは、エントリ名、展開後のサイズ、変更日を一覧表示します。一覧表示オプションを付けずに unzip を実行すると、通常は現在のディレクトリにファイルが展開されるため、オプションを付けたままにしてください。これらの動作は、Appleが配布する unzip のマニュアルに記載されています。

  1. ターミナルを開き、ZIPファイルが表示されているFinderウインドウを開いたままにします。
  2. /usr/bin/unzip -l と入力し、その後にスペースを入れます。まだ Return キーは押さないでください。
  3. FinderからZIPファイルをターミナルウインドウにドラッグし、スペースの後ろに置きます。
  4. コマンドが /usr/bin/unzip -l で始まり、その後にアーカイブのパスが続いていることを確認してから、Return キーを押します。

ファイルをターミナルにドラッグすると絶対パスが入力されます。Appleのターミナルガイドに説明があります。これにより、一覧表示する前にアーカイブのフォルダへ移動する必要がなくなります。

たとえば、使い捨てのZIPファイル Archive Inspection Demo.zip がデスクトップにある場合、コマンド全体は次のようになります。

/usr/bin/unzip -l "$HOME/Desktop/Archive Inspection Demo.zip"

パスを引用符で囲むと、この例のファイル名に含まれるスペースがひとまとまりとして扱われます。このコマンドを実行するには、その場所にZIPファイルが存在している必要があります。例のアーカイブは作成されません。ファイルが別の場所にある場合や名前が異なる場合は、サンプルのパスをコピーせず、ドラッグする方法を使ってください。

Appleは、FinderでZIPをダブルクリックして展開する方法を案内しており、展開された項目はZIPの隣に表示されます。この確認作業では、アーカイブを選択してドラッグしてください。AppleのZIPに関する手順を参照してください。

使い捨てのアーカイブで試す

合成テキストだけを使って、小さなサンプルを作成できます。既存のファイルと混ざらないよう、まだ使われていないフォルダ名を選んでください。

  1. Finderでデスクトップに移動し、ファイル > 新規フォルダ を選びます。フォルダ名を Archive Inspection Demo にします。その名前がすでに使われている場合は、別の未使用の名前を選び、手順全体でその名前を使ってください。フォルダの作成方法は、Macでフォルダを使ってファイルを整理するに記載されています。
  2. TextEditで Blue circle sample と入力した書類を作成します。フォーマット > 標準テキストにする、続けて ファイル > 保存 を選び、新しいフォルダ内に shapes.txt として保存します。
  3. Green square sample と入力した別の標準テキスト書類を作成し、同じフォルダに colors.txt として保存します。書類の作成と変換の手順は、AppleのTextEditガイドに沿ったものです。
  4. FinderでフォルダをControlキーを押しながらクリックし、「圧縮」を選びます。Appleの説明によると、フォルダを1つ圧縮すると、そのフォルダ名のZIPが作成されます。次に進む前に、同じ名前のZIPがすでにないことを確認してください。必要なら新しいフォルダ名を使います。Macでファイルやフォルダを圧縮・解凍するを参照してください。
  5. 上記のターミナルの手順で、作成されたZIPを一覧表示します。

Archive Inspection Demo/shapes.txt と Archive Inspection Demo/colors.txt に対応するエントリを探してください。これらは作成したサンプルで想定されるパスであり、実際にMacでテストしたときの出力ではありません。エントリの順序や追加のエントリは異なる場合があります。

元のフォルダは、圧縮前に作成したため残っています。フォルダがあることは、一覧表示コマンドによって何かが展開された証拠にはなりません。作業が終わったら、FinderでサンプルのフォルダとZIPを削除できます。

一覧を読み取り、必要な詳細情報を確認する

アーカイブの一覧から、どのエントリが保存されているかがわかります。各エントリ内のテキストや画像が開かれるわけではありません。次の表を参考に、必要な情報を得られる最小限の確認方法を選んでください。

確認したいこと コマンドまたは確認方法 読み取り方
ZIPにどのエントリがあり、それぞれのサイズはいくつか? unzip -l の後にアーカイブのパスを指定 保存されたパスと展開後のサイズを確認します。
ZIP内のエントリ名だけを確認できるか? unzip -Z1 の後にアーカイブのパスを指定 要約表を表示せず、1行につき1つのエントリ名が表示されます。
名前が似ているファイルが別々のフォルダにあるか? エントリの完全なパスを比較 Drafts/shapes.txt と Final/shapes.txt は異なるパスです。
一覧にあるファイルがデスクトップにすでに存在するか? Finderで、保存先として想定している場所を別途確認 アーカイブにエントリがあるだけでは、その場所に別のファイルが存在するとはわかりません。

合成サンプルの名前だけをすっきり表示するには、次のコマンドを実行します。

/usr/bin/unzip -Z1 "$HOME/Desktop/Archive Inspection Demo.zip"

ここでは -Z がZipInfoモードを選択し、1 がファイル名だけを1行に1つずつ表示します。保存されたディレクトリ名は表示されるパスに含まれます。これらのオプションは、Appleが配布する zipinfo のマニュアルに記載されています。

エントリを比較するときは、完全なパスを使ってください。shapes.txt という名前のファイルが2つあっても、アーカイブ内の異なるフォルダに格納されている場合があります。一方、一覧表示だけでは、同じ名前のファイルがあるフォルダに後からエントリを展開した場合に何が起きるかはわかりません。この方法では、アーカイブ内のファイルを書き出さずに一覧を表示するため、展開先に関する問題は発生しません。

一覧表示が成功したとしても、アーカイブ全体の検査が完了したことにはなりません。unzip のマニュアルには、エントリをメモリ上で展開し、保存されたチェックサムを確認する別の -t 操作が記載されています。エントリ名が表示されることは、その内容が検査済みであることと同じではありません。記載されている一覧表示と検査のオプションを参照してください。

TARアーカイブと圧縮されたTARファイルを確認する

TARアーカイブには、/usr/bin/tar -tf の後にパスを指定します。Appleが配布するマニュアルでは、-t は一覧表示モードを選択し、-f はアーカイブファイルを指定します。同じ実装は読み込み時にgzip圧縮を自動で認識するため、この形式はgzip圧縮されたTARアーカイブにも使えます。Appleが配布する tar のマニュアルを参照してください。

たとえば、デスクトップに既存のサンプルアーカイブ Sample Bundle.tar.gz がある場合、コマンド全体は次のようになります。

/usr/bin/tar -tf "$HOME/Desktop/Sample Bundle.tar.gz"

これは別の例です。上記のFinderでの練習手順で作成されるのはZIPであり、このTARファイルではありません。このコマンドは、そのようなファイルが存在してから実行してください。または、/usr/bin/tar -tf と入力してスペースを入れ、既存の使い捨てTARアーカイブをターミナルにドラッグしてください。

より詳細な一覧を表示するには、v を追加します。

/usr/bin/tar -tvf "$HOME/Desktop/Sample Bundle.tar.gz"

マニュアルには、詳細表示の出力は長いディレクトリ一覧に似ていると記載されています。コマンドに t を残してください。x はディスクへの展開を選択します。同じマニュアルでは、アーカイブ内で名前が重複していると、展開時に先のエントリが後のエントリで上書きされる場合があることも説明されています。これも、一覧表示と展開を区別する理由の1つです。tar の各モードと詳細表示オプションを参照してください。

Appleのショートカットでこの作業を自動化できるか?

ショートカットはFinderで選択した項目を受け取ることができ、Finderのアクションとして表示されます。この連携は自動化の出発点になりますが、それだけでアーカイブの一覧表示ができるわけではありません。AppleのFinderとクイックアクションに関する手順にはショートカットの実行場所が記載されており、実際の一覧表示の動作については上記のコマンドマニュアルで確認できます。

既存のショートカットを調整する前に、そのアクションを確認してください。エディタのアクションライブラリでアクションにポインタを合わせ、情報ボタンをクリックします。ショートカット内にあるアクションの場合は、そのアイコンをControlキーを押しながらクリックし、「情報を表示」を選びます。Appleによると、この説明には受け入れる入力と結果として出力する内容が記載されています。Macのショートカットでアクションリストを操作するを参照してください。

この作業では、3つの異なるものを区別してください。選択したアーカイブはファイルであり、一覧はエントリを説明するテキストであり、エントリ名は展開されたファイルオブジェクトではありません。アーカイブを展開してファイルを生成するアクションを使うと、作業手順が変わります。引用したAppleのガイドには、アーカイブのディレクトリを閲覧する標準機能の説明はありません。そのため、ここでの確認手順では、そのような機能を想定せずにターミナルを使います。

入力設定も重要です。Appleの説明によると、ショートカットでは受け入れるコンテンツの種類を制限でき、入力がない場合は「停止して応答」を使えます。Finderで使う場合は、入力としてファイルを受け入れるようにし、入力がないときは後続の処理に空の値を渡すのではなく、明確に停止するようにします。これらの設定については、Macで別のアプリから実行するときにショートカットの入力を制限するを参照してください。

アーカイブを正しく一覧表示できない場合

オプションを繰り返し変えるのではなく、結果に応じて次の手順を決めてください。

  • アーカイブが見つからない場合: Finderでファイルがまだ存在することを確認し、その項目をドラッグしてコマンドをもう一度組み立てます。Finderで別の名前のZIPが作成されていないか、サンプル名を確認してください。
  • 形式または読み取りのエラーが表示される場合: 確認は正常に完了していません。意図したアーカイブを選択したか確認してください。ファイル名の拡張子を変更しても、その内容がその形式であるとは確認できません。
  • エラーの前にいくつかの名前が表示される場合: 結果は不完全とみなしてください。表示されたエントリがアーカイブ全体だと判断しないでください。
  • エントリ自体が別のアーカイブである場合: 外側のアーカイブの一覧には、内側のアーカイブが1つのエントリとして表示されます。内側のアーカイブの内容までわかるわけではありません。

通常のZIPを確認するための最短の手順は、/usr/bin/unzip -l と入力してスペースを入れ、アーカイブをドラッグしてから Return キーを押すことです。エントリの完全なパスと最後に表示されるメッセージを確認してください。必要なファイル名や構成がわかったら、アーカイブ内のファイルを展開せずに確認は完了です。

参考資料