关于BASH:BASH – 如何从一个目录中检索所有名称?

BASH - how to retrieve all names from one directory?

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

目录包含以下名称:

1
2
3
4
.foo bar
.10
10.foo bar
foo bar.foo bar

我试过

1
2
3
4
for item in $(ls"/opt/$PATH")
do
    echo"$item"
done

有人建议吗?谢谢您。


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

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

如果只需要不带绝对路径的文件名,则有几个选项,例如:

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

或:

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

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

1
shopt -s dotglob

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