Pipe

tar 和 tree 命令的管道?

  • October 2, 2021

我想查看一個大壓縮文件的樹(特別是只有二級目錄),所以我使用了以下命令: tar -tf tarfile | tree -L 2

但它輸出我所在目錄的樹,而不是壓縮文件的樹。其他命令可以正常工作,例如,如果我這樣做: tar -tf tarfile | less 它可以讓我正確探索 tar 文件。

我做錯了什麼還是我不能tree像其他命令一樣使用 pipping?如果沒有,有沒有其他方法可以只查看壓縮文件的二級目錄之前的文件?

由於tree不讀取標準輸入,而是遍歷實際目錄結構(無論是目前目錄還是指定目錄),您需要對 tar 文件的目錄進行後處理。如果 tar 文件是使用完整/絕對路徑名創建的,則需要調整範圍以找到所需的目錄深度。

一種選擇是awk

tar -tf tarfile | awk -F/ 'NF == 3'

另一個是cut(唯一排序,以便超過級別 2 的子目錄不會導致再次報告父目錄):

tar -tf tarfile | cut -d/ -f1-3 | sort -u

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