回答:
マニュアルページからそれを行う方法はわかりませんが、結果をいつでもフィルタリングできます。以下は、ファイル名に改行がないことを前提としています。
tar tzf your_archive | awk -F/ '{ if($NF != "") print $NF }'
使い方
フィールド区切り文字をに設定する/と、最後のフィールドはawk($NF)がファイル名を処理している場合はファイル名、ディレクトリ名を処理している場合は空です(ディレクトリ名にtar末尾のスラッシュが追加されます)。したがって、基本的にawkは、最後のフィールドが空でない場合は印刷するように指示しています。
Joseph R.の提案を利用して、末尾がでない行を探すことでファイルに正規表現[^/]$を使用できます。grep/
tar tzf archive.tar.gz | grep -e "[^/]$"
foo/barは、単にに対してではなく、まだ出力されbarます。必要なgrep -Eo '[^/]+$'(GNU grepを使用)。
ファイル名に改行が含まれていないと仮定します。
tar -tf foo.tar | sed -e 's#.*/##' -e '\#.#!d'
最初のsedコマンドは/、行の最後の前のすべてを削除するため、ファイル名の部分のみが出力されます。2番目のコマンドは、現在空になっている行、つまりa /で終わる行(ディレクトリ)を削除します。
pax(読み取りにPOSIXコマンドtarファイル):
pax -'s@.*/@@' < file.tar
(ディレクトリを含む、タイプに関係なくすべてのファイルをリストします)。
tar xvzf my_tar.tar.gz --transform 's/.*\///'。しかし残念ながら、それはそれはでリストに表示される方法を変更しないtのではなくx。