You can pattern-match with the ==
operator.
for f in *; do
[[ $f == *.txt ]] && continue
# [[ $f != *.txt ]] || continue
...
done
If this might run in an empty directory, either use shopt -s nullglob
prior to the loop, or put [ -e "$f" ] || continue
in side the loop. (The former is preferable, as it avoids constantly checking if a file exists.)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…