2017-08-29 63 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

工作完美,谢谢! –

相关问题