某一天當發現需要統計folder 和subfolder底下二三十萬條語音數據時,確實不是能夠靠人工逐個計算那麽簡單的事。
Solution:
需要使用到以下5個pipeline 形式的指令
ls = 顧名思義就是 "list" 當下folder內的所有資料
grep = 抓取自定義的文件名稱或副檔名
soxi = Sox 的親兄弟,能夠顯示語音檔案的所有資訊,如:-t filetype, -r sample-rate, -c channel, -D duration, -b bits per sample等
awk = 非常強大的一個文件處理指令,能夠處理計算、比較、批量處理、文件合併等等,
可參考:https://awk.readthedocs.io/en/latest/index.html
parallel = 平行處理對應指令,可以由 -j $(nproc) 最大化機器平行處理jobs的數目
利用這些指令在terminal 內輸入以下的pipeline形式,
YOURDATAFOLDER~$ ls | grep ".wav" | parallel -j $(nproc) soxi -D {} | awk '{SUM += $1} END {printf "%d:%d:%d\n", SUM/3600, SUM%3600/60, SUM%60}'
會得到以下結果,完成!!!


