2017-04-07 119 views
0

是否可以僅從tar-archive中提取目錄結構而不提取文件?僅解壓目錄結構

我試圖用

tar tvpf archive.tar | nawk '/.*\/$/{ print $NF }' | tar -xpf archive.tar --no-recursion -T - 

所有目錄顯示有一個尾隨/。因此,只有打印出這些/這些/最後的行。問題是,tar -T - 不接受按行分隔的路徑名。其他空格分隔文件名,因此它不適用於包含空格的pathes。任何想法?

這不是解決所有問題的解決方案,然後刪除文件,然後將目錄tar複製到目標,儘管這是可能的。我想創建一個沒有臨時文件的解決方案。 bash解決方案將會有所幫助。

回答

1

當然,我偶然發現了類似的答案。

tar -tf file.tar | grep -v '/$' | sed 's/ /\\ /g' > excluded_files ; tar xfX file.tar excluded_files ; rm -f excluded_files 

第一部分看起來在tar中,管道輸出到grep只抓取文件名,這些被髮送到一個臨時文件。然後提取焦油,排除排除的文件,最後刪除臨時文件。

編輯:添加sed以刪除路徑中的轉義空格。

更新

正如評論所說,這也是acheivable沒有臨時文件和進程替換。乾杯Walter A.更清潔。

tar xfX file.tar <(tar -tf file.tar | grep -v '/$' | sed 's/ /\\ /g') 
+1

可避免與進程替換臨時文件: '焦油XFX文件.tar <(焦油-tf文件.tar | grep的-v '/ $' | sed的 'S// \\/G' )' –

+0

@WalterA很好,我會把它作爲編輯添加。 – benjamin