遍历目录中HTML文件时,如何排除指定的index.html文件?
排除特定HTML文件的遍历方法
很简单,你只需要在循环里添加一个条件判断,跳过index.html即可,这里给你几种实用的写法:
方法1:基础if条件判断
这是最直观的写法,适配所有bash环境:
for f in *.html; do # 判断当前文件名不等于index.html时输出 if [ "$f" != "index.html" ]; then echo "$f" fi done
注意:变量$f和字符串index.html都要加双引号,避免文件名包含空格、特殊字符时出现语法错误。
方法2:紧凑的一行写法
如果偏爱简洁的代码风格,可以用&&简化逻辑,只有条件为真时才执行echo:
for f in *.html; do [ "$f" != "index.html" ] && echo "$f"; done
方法3:通配符直接过滤(高效推荐)
如果你的shell支持扩展通配符(bash需要先开启,zsh默认支持),可以直接在循环的文件匹配规则里排除index.html,连if都不用写:
# bash环境下先开启扩展glob特性 shopt -s extglob for f in !(index.html).html; do echo "$f" done
这种方式让shell在遍历前就过滤掉目标文件,效率更高,代码也更清爽。
内容的提问来源于stack exchange,提问作者Raphael Rafatpanah
相关产品推荐
相关产品推荐

