正規表現を使用して最後に特定の文字列なしでパターンを一致させる方法

正規表現を使用して最後に特定の文字列なしでパターンを一致させる方法

「POSIX BRE」または「POSIX ERE」正規表現を使用して文字列(行または単語)を一致させる方法いいえbakありますか?

最後に、ファイル名を持たls | egrep '<regex>'ないすべてのファイルを見つけることを作成したいと思います。bak

file1たとえば、、、、、file2_bakおよび3つのファイルがある場合、bak_file3正規表現はfile1andにのみ一致する必要がありますbak_file3(は一致しませんfile2_bak)。

を使用して実行できることを知っていますが、orオプションを使用せずに実行したいとls | grep -v 'bak$'思います。-vこれはPOSIX正規表現の理論的/学術的問題であるため、使用したくありません。grepegrep-v

bak最後にファイル名を一致させる方法は次のとおりです。

$ ls | egrep 'bak$'
file2_bak
$ 

上記の正規表現は、bak$最後に文字列があるすべての文字列と一致します。bakしかし、すべての文字列に一致する正規表現をどのように書くのですか?するいいえ持つ bak最後に?

ベストアンサー1

ご使用の場合kshbashまたは拡張ワイルドカード有効にzshなったksh 球有効)ファイルグロービングモードを使用して、必要なものを取得できます.

ls -d -- !(*bak)

の場合、grep単純な解決策を得るには否定を使用してください-v

ls | grep -v 'bak$'

おすすめ記事