Skip to content

Instantly share code, notes, and snippets.

@charlesbedrosian
Last active August 29, 2015 14:11
Show Gist options
  • Save charlesbedrosian/0e831f5be8053419e51e to your computer and use it in GitHub Desktop.
Save charlesbedrosian/0e831f5be8053419e51e to your computer and use it in GitHub Desktop.
Utility to scan a settings plist and remove a entries matching a key from the provided list.
#/bin/bash
if [ $# -ne 2 ]; then
echo "Invalid parameters specified."
echo "expected syntax to remove keys in list from plist file some.plist:"
echo "./remove_key.sh some.plist key1,key2,key3"i
exit 1
fi
plist="$1"
keysToRemove="$2"
cnt=`/usr/libexec/PlistBuddy -c "Print PreferenceSpecifiers:" $plist | grep "Dict"|wc -l | tr -d ' '`
cnt=`expr "$cnt" '-' '1'`
for i in `seq 0 $cnt`; do
key=`/usr/libexec/PlistBuddy -c "Print PreferenceSpecifiers:${i}:Key" $plist 2>/dev/null`
pattern="^${key},|^${key}$|,${key}$|,${key},"
if [[ $keysToRemove =~ $pattern ]];then
/usr/libexec/PlistBuddy -c "Delete PreferenceSpecifiers:${i}" $plist
echo "found and removed $key"
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment