Exclude a string from wildcard search in a shell

前端 未结 3 843
盖世英雄少女心
盖世英雄少女心 2020-12-01 21:53

I am trying to exclude a certain string from a file search.

Suppose I have a list of files: file_Michael.txt, file_Thomas.txt, file_Anne.txt.

I want to be ab

相关标签:
3条回答
  • 2020-12-01 22:10

    With Bash

    shopt -s extglob
    ls !(*Thomas).txt
    

    where the first line means "set extended globbing", see the manual for more information.

    Some other ways could be:

    find . -type f \( -iname "*.txt" -a -not -iname "*thomas*" \)
    
    ls *txt |grep -vi "thomas"
    
    0 讨论(0)
  • 2020-12-01 22:20

    You can use find to do this:

    $ find . -name '*.txt' -a ! -name '*Thomas.txt'
    
    0 讨论(0)
  • 2020-12-01 22:31

    If you are looping a wildcard, just skip the rest of the iteration if there is something you want to exclude.

    for file in *.txt; do
        case $file in *Thomas*) continue;; esac
        : ... do stuff with "$file"
    done
    
    0 讨论(0)
提交回复
热议问题