Bash: loop through files that DO NOT match extension

后端 未结 6 367
眼角桃花
眼角桃花 2021-01-13 17:32

I\'m writing a bash script that needs to loop files inside a directory that do not match a specific extension. So far, I\'ve found that the following code loops all files th

6条回答
  •  无人共我
    2021-01-13 18:17

    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.)

提交回复
热议问题