Tar
是否可以搜尋 .tar.gz 文件廣度優先?
我想從這裡下載一個大 (199GB) .tar.gz 文件的一部分。首先,我使用以下命令列出 .tar.gz 文件中的所有文件:
wget -qO- https://www.cs.cornell.edu/projects/megadepth/dataset/Megadepth_v1/MegaDepth_v1.tar.gz | tar -tz
接下來,我嘗試使用以下命令下載 .tar.gz 中文件夾的內容:
wget -qO- https://www.cs.cornell.edu/projects/megadepth/dataset/Megadepth_v1/MegaDepth_v1.tar.gz | tar -xz phoenix/S6/zl548/MegaDepth_v1/0000
但是,這需要很長時間,因為該
tar
命令會深度優先搜尋並遞歸地搜尋下面的每個文件夾phoenix/S6/zl548/MegaDepth_v1
。我只對文件夾的內容感興趣phoenix/S6/zl548/MegaDepth_v1/0000
。有沒有辦法在不搜尋其他文件夾的子文件夾的情況下下載該文件夾的內容,例如phoenix/S6/zl548/MegaDepth_v1/0162 phoenix/S6/zl548/MegaDepth_v1/0001 phoenix/S6/zl548/MegaDepth_v1/0132
換句話說,有沒有更快的方法來下載文件夾的內容
phoenix/S6/zl548/MegaDepth_v1/0000
?上述命令的一些參考:
tar
寫入文件頭,然後是文件內容,然後是下一個文件頭,下一個文件內容,依此類推。沒有與條目關聯的順序,您可以提出的唯一優化是跳過文件的內容,以獲取下一個標題,直接查找它。為此,您需要有一個可搜尋的文件。
但是您的文件
.gz
是壓縮的,因此您沒有可靠的方法可以跳到下一個條目,這意味著您必須閱讀(下載)整個文件才能獲取內容。這就是答案:不,您無法避免讀取/下載整個文件。所以,既然無論如何你都必須完全下載它,你最好只下載一次,然後在本地文件系統中解決所有問題。