BASH - 如何从一个目录中检索所有名称?

时间:2018-03-16 22:58:49

标签: bash

如何从一个目录中检索所有名称?

该目录包含以下名称:

.foo bar
.10
10.foo bar
foo bar.foo bar

我试过

for item in $(ls "/opt/$PATH")
do
    echo "$item"
done

有人会建议吗?谢谢。

1 个答案:

答案 0 :(得分:5)

不要解析ls的输出。使用globs,例如:

for item in "/opt/$path"/*; do echo "$item"; done

如果您只想要没有绝对路径的文件名,您有几个选项,例如:

for item in "/opt/$path"/*; do basename "$item"; done

或:

(cd "/opt/$path" && for item in *; do echo "$item"; done)

如果您想要包含隐藏文件,可以在上述命令之前设置dotglob选项:

shopt -s dotglob

作为旁注,使用"/opt/$PATH"非常可疑。 PATH是shell中非常重要的变量,包含以冒号分隔的目录列表,其中shell查找命令。 "/opt/$PATH"不太可能产生您想要的效果。 不要将此变量用于除设计之外的其他目的。