【发布时间】:2021-01-06 18:18:29
【问题描述】:
我有一个数组,其中包含不同级别目录中的文件路径列表。我想将该数组过滤为仅文件,这意味着那些以/ 结尾的文件应保留在数组中。我的文件系统上的所有路径都不是真正的路径,我可以使用操作系统工具检查目录/文件的类型。
我有一个包含以下字符串的数组:
file-a
dir/
dir/file-b
dir/dir-2/
dir/dir-2/file-c
并希望将其过滤为以下字符串(无目录):
file-a
dir/file-b
dir/dir-2/file-c
我尝试了以下方法,但删除了包括/ 在内的所有路径,导致file-a 成为唯一剩余的路径。
FILES_ARRAY=( ${FILES_ARRAY[@]//*\/} )
我尝试添加一个$(在正则表达式语法中很常见)来表示不会从数组中删除任何内容的结尾。
FILES_ARRAY=( ${FILES_ARRAY[@]//*\$/} )
【问题讨论】:
-
${FILES_ARRAY[@]//*\/}不是正则表达式,此语法特定于使用 glob 进行 Bash 字符串操作。
标签: arrays bash glob end-of-line