Tôi đang ở trên Fedora và các gói giọng nói này ở một vị trí hơi khác:
$ 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
Bạn chỉ có thể sửa đổi như vậy:
$ ls /usr/share/festival/voices/*/ -1 | grep -vE "/usr|^$"
Sử dụng tìm
Sử dụng ls
trong trang viên này thường được tán thành bởi vì đầu ra ls
khó phân tích. Tốt hơn để sử dụng find
lệnh, như vậy:
$ 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
Chi tiết tìm & tên cơ sở
Lệnh này hoạt động bằng cách tạo danh sách các đường dẫn đầy đủ đến các tệp có độ sâu chính xác 2 cấp đối với thư mục này:
/usr/share/festival/lib/voices
Danh sách này trông như thế này:
$ 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
Nhưng chúng tôi muốn phần cuối của các thư mục này, nút lá. Vì vậy, chúng ta có thể sử dụng basename
để phân tích nó ra:
$ basename /usr/share/festival/lib/voices/us/nitech_us_awb_arctic_hts
nitech_us_awb_arctic_hts
Đặt tất cả lại với nhau, chúng ta có thể thực hiện find
lệnh chuyển từng thư mục sâu 2 cấp cho basename
lệnh. Ký hiệu basename {}
là những gì đang thực hiện các chuyển đổi tên cơ sở. Tìm cuộc gọi nó thông qua -exec
chuyển đổi của nó .