グローバルマッチングからパターンを除外

グローバルマッチングからパターンを除外

デフォルトのファイル名が同じファイルが複数あります。一つだけ除いて全て削除したい

foo.org #keep
foo.tex #delete
foo.fls #delete
foo.bib #delete
etc

1つを保管する必要がない場合は使用できることがわかりますrm foo.*

TLDP否定一致を示します^。試行錯誤を経て調べたのは

rm foo.*[^org]

必要な作業を行いますが、構文をよく理解していません。

また、これは私のユースケースの制限ではありませんが、このパターンはfoo.ofoo.or。このモードの仕組みと無視されたグロブに発生する現象ただ foo.orgそうですか?

ベストアンサー1

shopt -s extglob
echo rm foo.!(org)

これはfoo.NOTに続くすべての項目と一致します。org

後で正常なグローバル動作を復元するには、次のようにします。

shopt -u extglob

引用:GNU Bashリファレンスマニュアル

おすすめ記事