Arrays Bash-根据文件名将文件分成不同的数组

Arrays Bash-根据文件名将文件分成不同的数组,arrays,bash,Arrays,Bash,我有一个音频文件文件夹。大多数是单一声音或声音精灵,而有些是连接到精灵列表中的多个声音精灵。这些精灵列表使用一种命名约定,在文件名的末尾添加一个\u SL。如何创建声音精灵和精灵列表的两个阵列?我尝试使用find排除精灵列表,如下所示: soundSprites+=($(find . -maxdepth 1 ! -name "*_SL*")) 但这会在我想要避免的每个文件名之前添加一个/。我没有弄清楚如何遍历数组并删除每个/,我只能假设有一个优雅的解决方案,我根本不知道 非常感谢您的帮助。不要

我有一个音频文件文件夹。大多数是单一声音或声音精灵,而有些是连接到精灵列表中的多个声音精灵。这些精灵列表使用一种命名约定,在文件名的末尾添加一个
\u SL
。如何创建声音精灵和精灵列表的两个阵列?我尝试使用
find
排除精灵列表,如下所示:

soundSprites+=($(find . -maxdepth 1 ! -name "*_SL*"))
但这会在我想要避免的每个文件名之前添加一个
/
。我没有弄清楚如何遍历数组并删除每个
/
,我只能假设有一个优雅的解决方案,我根本不知道


非常感谢您的帮助。

不要使用
在此处查找
;对于包含shell用于分词或路径名生成的字符的文件名,此操作将失败。相反,请使用为路径名生成而设计的模式

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

不要在这里使用
find
;对于包含shell用于分词或路径名生成的字符的文件名,此操作将失败。相反,请使用为路径名生成而设计的模式

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

根据此问题最佳答案中的信息: 你可以做:

    shopt  extglob
    soundSprites=(!(*_SL*))

根据此问题最佳答案中的信息: 你可以做:

    shopt  extglob
    soundSprites=(!(*_SL*))

非常好,谢谢!非常好,谢谢!chepner的速度稍微快一点,但是使用+=可能会很危险。如果不再需要extglob选项,请不要忘记停用它。chepner的速度稍快,但使用+=可能会很危险。如果您不再需要extglob选项,请不要忘记停用它。
/
是一项功能,您应该很高兴它在那里(否则,当
find
找到名称以
-
开头的文件并将其传递给一个认为它是不支持的选项名称的命令时,您会遇到麻烦).
/
是一项功能,您应该很高兴它在那里(否则,当
find
找到名称以
-
开头的文件并将其传递给一个认为它是不支持的选项名称的命令时,您会遇到麻烦)。