tarはファイルのみをリストします。

tarはファイルのみをリストします。

面白い事実:使用する場合記録館.tar.gzを抽出して「ディレクトリ構造を保持」を選択解除した場合タール爆弾

tar -ztftarファイル内のすべてのファイルとディレクトリを一覧表示します。 tarファイル内のすべてのファイルを一覧表示する方法はありますか?いいえディレクトリ構造?

答え1

マニュアルページにはこれを行う方法はありませんが、いつでも結果をフィルタリングできます。以下では、ファイル名に改行文字がないとします。

tar tzf your_archive | awk -F/ '{ if($NF != "") print $NF }'

どのように動作しますか?

/最後のフィールドは、フィールド区切り文字をawk$NF)に設定することで知ることができます。これはファイル名が処理されている場合はファイル名で、ディレクトリtar名が処理されている場合は空です(ディレクトリ名に末尾のスラッシュを追加)。したがって、デフォルトで空awkでない場合は、最後のフィールドを印刷するように指示しています。

答え2

Joseph R.の提案では、正規表現を使用して[^/]$grep終わらない名前を見つけることができます/

tar tzf archive.tar.gz | grep -e "[^/]$"

答え3

すべてのファイル名に改行文字が含まれていないとします。

tar -tf foo.tar | sed -e 's#.*/##' -e '\#.#!d'

/最初のsedコマンドは、行の最後のコマンドの前のすべてのエントリを削除し、ファイル名部分のみを印刷します。 2番目のコマンドは、空の行、つまり/ディレクトリaで終わる行を削除します。

答え4

(POSIXコマンドを使用paxしてファイルを読み取るtar):

pax -'s@.*/@@' < file.tar

(ディレクトリを含むタイプに関係なく、すべてのファイルを一覧表示します)。

関連情報