Sono su Fedora e questi voice pack si trovano in una posizione leggermente diversa:
$ 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
Puoi semplicemente modificarlo in questo modo:
$ ls /usr/share/festival/voices/*/ -1 | grep -vE "/usr|^$"
Utilizzando find
L'uso lsin questo maniero è generalmente disapprovato perché l'output di lsè difficile da analizzare. Meglio usare il findcomando, in questo modo:
$ 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
Dettagli di find & basename
Questo comando funziona producendo un elenco di percorsi completi per i file che hanno esattamente 2 livelli di profondità rispetto a questa directory:
/usr/share/festival/lib/voices
Questo elenco è simile al seguente:
$ 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
Ma vogliamo l'ultima parte di queste directory, il nodo foglia. Quindi possiamo usarlo basenameper analizzarlo:
$ basename /usr/share/festival/lib/voices/us/nitech_us_awb_arctic_hts
nitech_us_awb_arctic_hts
Mettendo tutto insieme, possiamo fare in modo che il findcomando passi ogni directory profonda a 2 livelli al basenamecomando. La notazione basename {}è ciò che sta facendo queste conversioni di basename. Trova lo chiama tramite il suo -execinterruttore.