2014-05-25 67 views
0

im中找到文件信息字符串,並且我有一個包含大約200個.bundle文件(它們實際上是文件夾)的文件夾,每個.bundle文件夾中都有Info.plist -xml文本。 每個IM的Info.plist爲looing特定字符串像CFBundleExecutable和另一串鑰匙內部> CFBundleGetInfoString 我需要的CFBundleGetInfoString在OSX上的子目錄

我想創建一個包含.bundle日誌後CFBundleExecutable後的文本和文本文件名及其旁邊的版本。

所以輸出應該看起來像

a.bundle version 1.0.1 
b.bundle version 1.0.1 
c.bundle version 1.2.2 

我發現後然而卻沒有結果試圖AWK ...

+0

如何向我們展示info.plist文件的顯着部分?或者告訴我們「後面的文字」是什麼意思 - 這是否意味着它的權利相同?或者在下面一行?或17行後? –

+0

https://developer.apple.com/library/mac/documentation/general/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html –

回答

0

你可以把Python的內置plistlib模塊輕鬆解析的Plist的優勢。這是一個簡單的單線程,讓你開始:

find . -name Info.plist \ 
-execdir python -c 'import plistlib; \ 
     pl = plistlib.readPlist("Info.plist") ; \ 
     print("{0} version {1}".format(pl.get("CFBundleExecutable", "<none>"), \ 
             pl.get("CFBundleGetInfoString", "<none>")))' ';' 
+0

好,好 - 有沒有unix的方法呢?... – user67486

+0

什麼不是「unix」關於它? Plist不是一般的「unix-wide」文件格式;他們來自NeXT及其繼任者OS X.因此,他們在傳統的Unix工具中得不到很好的支持。 'find'和'python'都是標準OS X版本的一部分。 –

+0

不要誤解我的意思 - 腳本運行並且執行這個技巧,我爲此感謝你。我的問題是,如果這是可能的相同的事情與循環和傳統的sed或awk。 – user67486