bashのversionがある程度新しければ、特定のファイルを除くパターン!(PATTERN)
が使えるようだ。
パターンはglob(グロブ)が入っていてもOK。
!(test1)
であればtest1以外のファイル/ディレクトリが全て対象になり、ワイルドカードを使って!(*2)
であれば2で終わるファイル/ディレクトリを除いたものが対象となる。
# CentOS 7
$ bash --version | head -1
GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu)
$ ls -1
test1
test2
test3
$ ls -1 !(test1)
test2
test3
$ ls -1 !(*2)
test1
test3
bashのversionが古いと対応していないようだった。
# CentOS 6
$ bash --version | head -1
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
$ ls -1 !(test1)
-bash: !: event not found