Saya menggunakan Fedora, dan paket suara ini berada di lokasi yang sedikit berbeda:
$ 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
Anda bisa memodifikasi seperti ini:
$ ls /usr/share/festival/voices/*/ -1 | grep -vE "/usr|^$"
Menggunakan find
Penggunaan ls
di rumah ini biasanya disukai karena hasil dari ls
sulit untuk diurai. Lebih baik menggunakan find
perintah, seperti:
$ 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
Detail menemukan & nama kecil
Perintah ini bekerja dengan menghasilkan daftar path lengkap ke file yang tepat 2 level sehubungan dengan direktori ini:
/usr/share/festival/lib/voices
Daftar ini terlihat seperti ini:
$ 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
Tapi kami ingin bagian terakhir dari direktori ini, simpul daun. Jadi kita dapat menggunakan basename
untuk menguraikannya:
$ basename /usr/share/festival/lib/voices/us/nitech_us_awb_arctic_hts
nitech_us_awb_arctic_hts
Menyatukan semuanya, kita bisa membuat find
perintah melewati setiap direktori 2 level ke basename
perintah. Notasi basename {}
adalah apa yang melakukan konversi nama dasar ini. Temukan panggilan melalui -exec
sakelar itu.