Замена текста внутри нескольких файлов Info.plist, рекурсивно

Вот ответ после многих часов попыток понять его. По крайней мере, это работает для nadekobot. Скопируйте этот текст в системную папку systemdкак файл nedekobot.service, затем не забудьте включить служебный файл.

[Unit]
Description=Nadekobot

[Service]
WorkingDirectory=/root/
User=root
Type=forking

ExecStart=/usr/bin/tmux new-session -s mc-%i -d '/bin/sh nadeko_start.sh'

ExecStop=/bin/sleep 2

[Install]
WantedBy=multi-user.target
1
11.01.2020, 01:00
2 ответа

Предполагая, что ваш sedподдерживает флаг -iдля редактирования места в -(, большинство из тех, с которыми вы, вероятно, столкнетесь в основной операционной системе, поддерживают ), вы можете сделать:

find. -type f -name Info.plist -exec sed -i 's/Shared/Fireball/g' {} +

Если нет, вы можете попробовать perlвместо:

find. -type f -name Info.plist -exec perl -i -pe 's/Shared/Fireball/g' {} +

Просто убедитесь, что каждый экземпляр строки Sharedявляется тем, который вы хотите заменить. Может быть безопаснее использовать немного больше пути, просто чтобы быть в безопасности:

find. -type f -name Info.plist -exec sed -i 's|/Users/Shared/Library/|/Users/Fireball/Library|g' {} +
2
27.01.2020, 23:22

команда

find. -type f -iname Info.plist -exec sed "/<string>\/Users\/Shared\/Library\/Mail/s/Shared/Fireball/g" {} \; 2>/dev/null

выход

<string>/Users/Fireball/Library/Mail/V7/74398/Junk.mbox</string>

<string>/Users/Fireball/Library/Mail/V7/7-67B8/Sent.mbox</string>

<string>/Users/Fireball/Library/Mail/V7/OLD/Old.mbox</stri
1
27.01.2020, 23:22

Теги

Похожие вопросы