В целом можно мешать оболочке интерпретировать метасимвол путем выхода из него с обратной косой чертой (\
). Так, можно предотвратить весь $
в rename
аргумент от того, чтобы быть расширенным путем предварительного ожидания обратной косой черты:
echo -n `rename "-f" "'s/.*([0-9]{11}_[0-9]{11}).*\.(.*\$)/\$1.\$2/'" "$output_dir"*.$ext`
В данном случае, начиная со строки s/.*([0-9]...$2/
не нуждается ни в каких заменах уровня оболочки (смысл Вашего вопроса - то, как предотвратить их), Вы могли просто включить его в одинарные кавычки ('
) который предотвращает всю обработку оболочки:
echo -n `rename "-f" 's/.*([0-9]{11}_[0-9]{11}).*\.(.*$)/$1.$2/' "$output_dir"*.$ext`
(Обратите внимание, что Вам не нужны кавычки вокруг -f
, так как это не содержит метасимволов оболочки.)
С тех пор .plist
файлами уже является XML (или может быть легко преобразован), Вам просто нужно что-то для декодирования XML.
Для того использования xml2
:
$ cat com.apple.systemsound.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.sound.beep.volume</key>
<real>1</real>
</dict>
</plist>
$ xml2 < com.apple.systemsound.plist
/plist/@version=1.0
/plist/dict/key=com.apple.sound.beep.volume
/plist/dict/real=1
$
Необходимо смочь выяснить остальных.
Или для Perl, use XML::Simple;
(см. perldoc
для больше) для помещения структуры данных XML в хеш.
libplist, кажется, отвечает Вашим требованиям. Существует имя пакета Ubuntu "libplist-utils", что Вы могли сослаться в своем сценарии:
Описание-en: преобразователь списка свойств Apple Этот пакет containt инструменты для преобразования файлов списка свойств Apple от двоичного файла до XML и наоборот. Это - часть стопки libimobiledevice, обеспечивая доступ к продуктам компании Apple (iPod, iPhone, iPad...).
Домашняя страница: http://www.libimobiledevice.org/
Команда Install:
apt-get install libplist-utils
Пример использования:
plistutil -i Info.plist