У меня есть следующая структура каталогов из нескольких папок:
Applications
|
|____Salford_123
| |_________SomeFile.png
| |_________AnotherFile.nui
| |_________MenuSettings.txt
| |_________Data
| |_____Settings.txt
|
|____Salford_546
| |_________SomeFile.png
| |_________AnotherFile.nui
| |_________MenuSettings.txt
| |_________Data
| |_____Settings.txt
|
|____Salford_789
| |_________SomeFile.png
| |_________AnotherFile.nui
| |_________MenuSettings.txt
| |_________Data
| |_____Settings.txt
Текстовый файл MenuSettings.txt в каждой папке со следующим содержимым:
AppName: "http://www.bbc.co.uk”
DoubleWidthTile: "False"
TileColor: "0.76 0 0.24 1"
AnimationSize: "10 10"
AppName_xx_XX: “Venice Quays”
AppName_yy_YY: “Venice Quays”
Этот файл и его родительская папка создаются автоматически несколько раз. Первая строка файла имеет каждый раз другой URL-адрес, который может быть любой длины. Я пытаюсь скопировать сегмент с URL-адресом, чтобы заменить значения в AppName_xx_XX: и AppName_yy_YY: чтобы он выглядел так
AppName: "http://www.bbc.co.uk”
DoubleWidthTile: "False"
TileColor: "0.76 0 0.24 1"
AnimationSize: "10 10"
AppName_xx_XX: “http://www.bbc.co.uk”
AppName_yy_YY: “http://www.bbc.co.uk”
В записях для AppName_xx_XX: и AppName_yy_YY: будет сгенерировано любое слово любой длины с пробелами и знаками препинания. Часть строки xx и yy может состоять из двух любых символов. Поэтому я использовал «найти» для рекурсивного поиска по папкам и команду «sed» для копирования и замены сегментов, которые выводятся в другой файл, который я затем mv -v возвращал к оригиналу.
find salford* -maxdepth 1 -type d \( ! -name . \) -exec sh -c '(cd {} &&
cat MenuSettings.txt | sed -e 's/AppName\_en\_[[A-Z]]\:[[:blank:]]\"[[:alpha:]]*.\"/AppName\:[[:space:]]\"[[:alpha:]]*.[[:alpha:]]*.[[:alpha:]]*.\"/g' > MenuSettings3.txt
)' ';'
Файл bash запускается без ошибок, но не работает, так как сгенерированный файл не показывает никаких изменений. Где я ошибаюсь?