2010-12-07 11 views
145

次のgrep式は、現在のディレクトリとサブディレクトリにあるすべての.exeと.htmlファイルを正常に表示します。grep式を逆にする方法

ls -R |grep -E .*[\.exe]$\|.*[\.html]$ 

この結果を逆にして、代わりに.htmlまたは.exeでないものをリストします。 (つまり、!=です。)

答えて

219

使用するコマンドラインオプション-vまたは--invert-match

ls -R |grep -v -E .*[\.exe]$\|.*[\.html]$ 
58
grep -v 

または

grep --invert-match 

あなたはまたfindを使用して同じことを行うことができます。

find . -type f \(-iname "*" ! -iname ".exe" ! -iname ".html"\) 

詳細情報here

+2

'find'コマンドは、このXY問題の最も意味のある解決策です。この目的のために 'ls'と' grep'を組み合わせるのはせいぜい最高だと思われます。これは受け入れられた答えでなければなりません。 (+1) – Eric

+2

@Eric OPの要件にかかわらず、grep式を反転することは、ファイルを見つけることよりもはるかに役立ちます。それがほとんどの人がここに来る理由だとは思わない。 – byxor

24

grepコマンドに-vオプションを追加すると、結果が逆転します。

4
grep "subscription" | grep -v "spec" 
関連する問題