Как решить mv не может сообщить об ошибке такого файла или каталога

#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