代码之家  ›  专栏  ›  技术社区  ›  ajmm

使用bash在目录中列出名称中有空格的文件时出现问题

  •  2
  • ajmm  · 技术社区  · 6 月前

    我想有一个目录中所有文件的列表,因为稍后我会在代码中使用它们的名称。 我用了这个代码

    path="directory"
    files=($(ls "$path"))
    echo "${#files[@]}"
    echo "${files[@]}"
    

    在目录中,我只有一个文件“文件0”。 问题是,空格被解释为2个文件之间的分隔。 因此,它打印了两个元素:“file”和“0”,因为它们是目录中的两个不同文件。

    我找不到任何类似我的问题。 Bash版本: GNU bash,版本5.1.16(1)-发布 Linux薄荷21.1

    1 回复  |  直到 6 月前
        1
  •  3
  •   choroba    6 月前

    不要使用 ls 。使用由shell直接展开的通配符:

    path="directory"
    files=("$path"/*)