#bash
Вопрос:
Мне нужно написать сценарий bash. У меня есть основная папка с именем ABC, и папка содержит несколько папок, и в каждой папке несколько файлов. Теперь некоторые файлы называются так _servicename_List.java Здесь _servicename_
действует как заполнитель. Мне нужно заменить этот заполнитель строкой, которая говорит XYZ
Я попробовал приведенное ниже решение, однако оно не работает
$Service_Name="XYZ"
cd ABC
for FileName in **/*; do
mv -- "$FileName" "${FileName/_servicename_/$Service_Name}"
done
Я получаю следующую ошибку:
mv: cannot stat '**/*': No such file or directory
Может кто-нибудь помочь мне с недостающей частью?
Ценю всю вашу помощь! Заранее спасибо!
Ответ №1:
Вы пытаетесь использовать в шаблоне глобуса. **
По умолчанию это отключено (вы можете проверить это, выполнив a shopt globstar
; в вашем сценарии он, скорее всего, ответит выключением globstar. Вы можете включить его с помощью
shopt -s globstar