如何用bash的ls命令仅列出以特定字符开头的文件和目录?
列出/etc目录下以字母'a'开头的项目的几种方法
1. 直接用Shell通配符(最简便高效)
不需要写脚本,一条命令就能搞定:
ls -d /etc/a*
-d参数确保只显示项目本身,不会展开目录里的内容a*是Shell通配符,匹配所有以字母'a'开头的非隐藏项目
如果要包含以'.a'开头的隐藏项目,可以这样:
ls -d /etc/a* /etc/.a*
2. 改进你的循环脚本
你当前的脚本只是遍历/etc下所有项目,没有筛选逻辑。可以直接用通配符遍历目标项目,避免ls输出带来的文件名分割问题(比如文件名含空格时会出错):
for item in /etc/a*; do echo "$item" done
要包含隐藏项目的话,扩展通配符范围即可:
for item in /etc/a* /etc/.a*; do echo "$item" done
3. 用find命令(适合复杂筛选场景)
如果需要更灵活的筛选(比如区分文件/目录、递归查找等),可以用find:
# 只查找/etc下一级的a开头项目(不递归子目录) find /etc -maxdepth 1 -name "a*" -print # 包含隐藏项目的写法 find /etc -maxdepth 1 \( -name "a*" -o -name ".a*" \) -print # 只筛选以a开头的目录 find /etc -maxdepth 1 -type d -name "a*" -print
内容的提问来源于stack exchange,提问作者EliunKKy
相关产品推荐
相关产品推荐

