2012-07-28 127 views
1

我想寫一個腳本來從OS X下使用xattr在OS X上下載的磁盤映像中提取原始下載URL,以便我可以重命名它們,但仍然可以輕鬆地獲取其原始名稱參考。如果我打印xattr十六進制輸出的字符串表示

xattr -p com.apple.metadata:kMDItemWhereFroms *.dmg 

62 70 6C 69 73 74 30 30 A1 01 5F 10 4F 68 74 74 
70 3A 2F 2F 61 64 63 64 6F 77 6E 6C 6F 61 64 2E 
61 70 70 6C 65 2E 63 6F 6D 2F 4D 61 63 5F 4F 53 
5F 58 2F 6D 61 63 5F 6F 73 5F 78 5F 31 30 2E 36 
2E 31 5F 62 75 69 6C 64 5F 31 30 62 35 30 34 2F 
30 34 31 35 30 37 33 61 2E 64 6D 67 08 0A 00 00 
00 00 00 00 01 01 00 00 00 00 00 00 00 02 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 5C 

的URL開始於14字節(:

此命令打印給定的文件是從下載的URL的十六進制表示,作爲一個例子正確計數),並終止NULL。我怎樣才能讓我得到一個字符串格式化輸出這個字符串如下:

http://adcdownload.apple.com/Mac_OS_X/mac_os_x_10.6.1_build_10b504/0415073a.dmg

(不用擔心,這個鏈接不起作用,除非你登錄到ADC)

...本質上,Finder將在「獲取信息」中顯示同樣的內容。我試着將xattr的輸出傳遞給xxd,但我不確定如何指定偏移量,以便字符串從正確的位置開始。

回答

2

因此,在查看由xattr -p返回的二進制數據後,我意識到它實際上是一個二進制plist ...因此數據前面的「bplist」。出於某種原因,我之前沒有注意到這一點,但鑑於此,這裏有一個適用於從10.5到10.8的所有OS X的適當解決方案。

爲避免重複,我將鏈接到源代碼而不是粘貼它:https://github.com/jakepetroules/wherefrom

相關問題