Directory

非遞歸焦油列表

  • August 19, 2019

我有一個 tar 存檔文件,其中包含一個包含大量文件的目錄,我希望僅列出該目錄而不提取它(以盡快知道該目錄的文件名)。

我執行了:

tar -tf filename.tar.gz

當我只需要目錄時,執行輸出遞歸。

我怎麼能“過濾”那個目錄?

tar要從檔案的頂層獲取所有名稱:

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

這將列出存檔的內容,並/在每一行中刪除之前的第一位。對結果進行排序並刪除重複項。如果存檔僅包含一個頂級目錄(可能包含文件和子目錄),則結果將是該目錄的名稱。

如果頂級名稱包含換行符,則結果將取決於正在使用的實現(您將獲得一個帶有tar編碼換行符(來自 BSD 的兩個單獨的字元串)。\n``tar``tar``tar

例子:

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

同樣,如果檔案在其最上層僅包含一個目錄,這將返回其名稱。

引用自:https://unix.stackexchange.com/questions/536236