plutilの-convertオプションは、plist(property list)ファイルをXML形式・バイナリ形式・JSON形式の間で相互変換する。
フォーマットを変換する
-convertに続けて変換先のフォーマット(xml1/binary1/json)を指定する。変換結果は元のファイルへ直接上書きされる。xml1、binary1については【plutil】plistのxml1形式とbinary1形式の違い
を参照。
$ plutil -convert json sample.plist
$ file sample.plist
sample.plist: JSON data
jsonからbinary1、binary1からxml1のように、変換元のフォーマットを意識せず指定したフォーマットへ変換できる。
$ plutil -convert binary1 sample.plist
$ file sample.plist
sample.plist: Apple binary property list
-oで別ファイルへ出力する
-o <path>を指定すると、元のファイルを上書きせず指定したパスへ変換結果を書き出す。
$ plutil -convert xml1 sample.plist -o converted.xml
$ head -1 converted.xml
<?xml version="1.0" encoding="UTF-8"?>
$ file sample.plist
sample.plist: Apple binary property list
-oを指定した場合、元のファイル(sample.plist)のフォーマットは変換されないまま残る。-o -と指定すると標準出力へ書き出す。
-eで変換後ファイルの拡張子を指定する
-e <extension>を指定すると、元のファイル名に指定した拡張子を追加した新しいファイルを生成する。元のファイルは変更されない。
$ plutil -convert json sample.plist -e json.txt
$ ls
sample.json.txt sample.plist
$ cat sample.json.txt
{"Count":3,"Name":"Sample","Tags":["a","b"]}
-eで指定した拡張子は、元のファイルの拡張子(.plist)を置き換える形で使われる。
複数のplistファイルを一括変換しつつ、元のファイルも変換後のファイルも両方残したい場合に使える。
参考
【plutil】plistファイルの中身を人間可読な形式で表示する\第一線のプログラマーの行動原理を学べる!/
