Я в Fedora, і ці голосові пакети знаходяться в дещо іншому місці:
$ ls /usr/share/festival/lib/voices/*/ -1 | grep -vE "/usr|^$"
kal_diphone
ked_diphone
nitech_us_awb_arctic_hts
nitech_us_bdl_arctic_hts
nitech_us_clb_arctic_hts
nitech_us_jmk_arctic_hts
nitech_us_rms_arctic_hts
nitech_us_slt_arctic_hts
Ви можете просто змінити це так:
$ ls /usr/share/festival/voices/*/ -1 | grep -vE "/usr|^$"
Використання знахідки
Застосування lsв цій садибі, як правило, нахмуриться, оскільки висновок lsскладно проаналізувати. Краще використовувати findкоманду, наприклад так:
$ find /usr/share/festival/lib/voices -maxdepth 2 -mindepth 2 \
-type d -exec basename {} \;
nitech_us_awb_arctic_hts
nitech_us_bdl_arctic_hts
nitech_us_slt_arctic_hts
nitech_us_jmk_arctic_hts
nitech_us_clb_arctic_hts
nitech_us_rms_arctic_hts
ked_diphone
kal_diphone
Деталі пошуку та базової назви
Ця команда працює, створюючи список повних шляхів до файлів, що мають глибину точно на два рівні щодо цього каталогу:
/usr/share/festival/lib/voices
Цей список виглядає приблизно так:
$ find /usr/share/festival/lib/voices -maxdepth 2 -mindepth 2
/usr/share/festival/lib/voices/us/nitech_us_awb_arctic_hts
/usr/share/festival/lib/voices/us/nitech_us_bdl_arctic_hts
/usr/share/festival/lib/voices/us/nitech_us_slt_arctic_hts
/usr/share/festival/lib/voices/us/nitech_us_jmk_arctic_hts
/usr/share/festival/lib/voices/us/nitech_us_clb_arctic_hts
/usr/share/festival/lib/voices/us/nitech_us_rms_arctic_hts
/usr/share/festival/lib/voices/english/ked_diphone
/usr/share/festival/lib/voices/english/kal_diphon
Але ми хочемо останню частину цих каталогів, листовий вузол. Тож ми можемо використати basenameдля розбору:
$ basename /usr/share/festival/lib/voices/us/nitech_us_awb_arctic_hts
nitech_us_awb_arctic_hts
Збираючи все це разом, ми можемо змусити findкоманду передавати кожну глибинну директорію 2 рівня до basenameкоманди. Позначення basename {}- це, що робить ці перетворення базових імен. Знайдіть дзвінки за допомогою -execперемикача.