【问题标题】:BASH - how to retrieve all names from one directory?BASH - 如何从一个目录中检索所有名称?
【发布时间】:2018-08-26 02:26:31
【问题描述】:

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

目录包含诸如:的名称

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

我试过了

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

有人会建议吗?谢谢。

【问题讨论】:

标签: bash


【解决方案1】:

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

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" 不太可能产生您想要的效果。 请勿将此变量用于其他目的。

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2010-11-06
    • 2022-01-19
    • 2013-09-08
    • 1970-01-01
    • 2020-10-21
    相关资源
    最近更新 更多