非再帰的tarリスト

非再帰的tarリスト

私は大量のファイルを含むディレクトリを含むtarアーカイブを持っています。
私は以下を実行しました:

tar -tf filename.tar.gz

ディレクトリが必要な場合、実行は再帰的に出力されます。
このディレクトリをどのように「フィルタリング」できますか?

ベストアンサー1

アーカイブの最上位レベルですべての名前を取得するには、次のようにしますtar

tar -tf archive.tar | cut -d '/' -f 1 | sort -u

これにより、アーカイブの内容が一覧表示され、/各行の前の最初のビットが削除されます。結果を並べ替え、重複項目を削除します。アーカイブに最上位ディレクトリ(ファイルとサブディレクトリを含めることができます)が1つしか含まれていない場合、結果はそのディレクトリの名前になります。

最上位名に改行が含まれている場合、結果は使用されている実装tarによって異なります(GNUでエンコードされた改行を含む文字列を取得します\ntarGNUはtarタブと名前の他の文字もエンコードします))。そしてBSDから2つの別々の文字列を取得しますtar。 。

例:

$ tar -tf archive.tar
README.txt
source
source/program.c
$ tar -tf archive.tar | cut -d '/' -f 1 | sort -u
README.txt
source

同様に、アーカイブの最上位レベルにディレクトリが1つしか含まれていない場合は、その名前が返されます。

おすすめ記事