如何从一个目录中检索所有名称?
该目录包含以下名称:
.foo bar
.10
10.foo bar
foo bar.foo bar
我试过
for item in $(ls "/opt/$PATH")
do
echo "$item"
done
有人会建议吗?谢谢。
答案 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"
不太可能产生您想要的效果。
不要将此变量用于除设计之外的其他目的。