私は大量のファイルを含むディレクトリを含むtarアーカイブを持っています。
私は以下を実行しました:
tar -tf filename.tar.gz
ディレクトリが必要な場合、実行は再帰的に出力されます。
このディレクトリをどのように「フィルタリング」できますか?
ベストアンサー1
アーカイブの最上位レベルですべての名前を取得するには、次のようにしますtar
。
tar -tf archive.tar | cut -d '/' -f 1 | sort -u
これにより、アーカイブの内容が一覧表示され、/
各行の前の最初のビットが削除されます。結果を並べ替え、重複項目を削除します。アーカイブに最上位ディレクトリ(ファイルとサブディレクトリを含めることができます)が1つしか含まれていない場合、結果はそのディレクトリの名前になります。
最上位名に改行が含まれている場合、結果は使用されている実装tar
によって異なります(GNUでエンコードされた改行を含む文字列を取得します\n
(tar
GNUは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つしか含まれていない場合は、その名前が返されます。