面白い事実:使用する場合記録館.tar.gzを抽出して「ディレクトリ構造を保持」を選択解除した場合タール爆弾。
tar -ztf
tarファイル内のすべてのファイルとディレクトリを一覧表示します。 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
(ディレクトリを含むタイプに関係なく、すべてのファイルを一覧表示します)。