2017-08-29 60 views
0

我有一個音頻文件的文件夾。大多數是單聲道 - 或soundSprites - 而一些是連接成spriteLists的幾個soundSprites。這些spriteLists使用命名約定,並在文件名的末尾添加_SL。我如何創建兩個soundSprites和spriteLists數組?我試着用find排除像這樣的spriteLists:Bash - 根據文件名將文件分爲不同的陣列

soundSprites+=($(find . -maxdepth 1 ! -name "*_SL*")) 

但是,這增加了./之前,我想避免的每個文件名。而不是搞清楚如何通過數組迭代,並刪除每個./我只能假設有一個優雅的解決方案,我根本沒有意識到。

任何幫助,非常感謝。

+0

的'/'是一個功能,你應該慶幸它的存在(否則你結束當'find'找到名稱以'-'開頭的文件,並且將它們傳遞給一個認爲它是不支持的選項名稱的命令時,會遇到麻煩。 – tripleee

回答

3

這裏不要使用find;對於包含shell將用於分詞或路徑名生成的字符的文件名,這將失敗。相反,使用設計爲的模式來生成路徑名。

shopt -s extglob 
soundSprites+=(!(*_SL*)) 
+0

工作完美,謝謝! –

相關問題