回答:
grep -v
または
grep --invert-match
以下を使用して同じことを行うこともできますfind
:
find . -type f \( -iname "*" ! -iname ".exe" ! -iname ".html"\)
詳細はこちら。
find
コマンドは、このXYの問題に最も意味的なソリューションです。この目的のために組み合わせるls
とgrep
、せいぜいハックに思えます。これは受け入れられる答えになるはずです。(+1)
grep "subscription" | grep -v "spec"
-v
/--invert-match
は、戻りコードがgrep
正常に実行されたことを示すかどうかを必ずしも反転するのではなく、通常は一致しない行と一致することに注意してください。戻りコードを反転させたい(つまり、すべての行が少なくとも1つではなくパターンに一致しない場合に成功する)場合は、を使用する必要があります! grep
。これは、次のような条件式での使用を見つけますif ! ls | grep -qE ".(\.exe)$"; then echo No .exe files in $(pwd); fi
。