使用通配符提取 tar 存檔中的特定文件

使用通配符提取 tar 存檔中的特定文件

我正在嘗試創建一個腳本來從包含多種文件的存檔中僅提取 jpeg 圖片。

為此,我嘗試使用:

   tar -xf MyTar.tar *.jpg

但它失敗了(找不到*.jpg)並建議我使用“--wildcard”。所以我嘗試了

tar -xf MyTar.tar --wildcard *.jpg

我這樣做了,但隨後出現了相同的錯誤和不同的警告,告訴我選項「--wildcard」不明確。

我已經瀏覽了 tar 的手冊頁,但沒有找到有關該問題的線索。

答案1

最終,我在好好休息後找到了答案。該選項是通配符s, 複數...

所以命令

tar -xf MyTar.tar --wildcards "*.jpg"

正是我需要的。

答案2

像這樣在通配符周圍加上引號,"*.jpg"這樣 shell 就不會嘗試擴展它,而是直接將其傳遞到 tar。您希望 tar 評估通配符,而不是 shell 和引號來執行此操作。

答案3

對於某些舊版本的 tar,以下內容摘自“人”文件:

檔案名稱替換通配符不能用於從檔案中提取檔案。相反,使用以下形式的命令:

tar xvf ... /dev/rmt/0 `tar tf ... /dev/rmt/0 | grep 'pattern' `

相關內容