Odpowiedzi:
Użyj opcji wiersza polecenia -vlub --invert-match,
ls -R |grep -v -E .*[\.exe]$\|.*[\.html]$
grep -v
lub
grep --invert-match
Możesz również zrobić to samo, używając find:
find . -type f \( -iname "*" ! -iname ".exe" ! -iname ".html"\)
Więcej informacji tutaj .
findKomenda jest najbardziej semantycznej Rozwiązaniem tego problemu XY. Łączenie lsi grepdo tego celu wydaje się w najlepszym razie hacking. To powinna być zaakceptowana odpowiedź. (+1)
Dodaj -vopcję do greppolecenia, aby odwrócić wyniki.
grep "subscription" | grep -v "spec"
-v/--invert-matchniekoniecznie odwróci, czy kod powrotugrepwskazuje pomyślne wykonanie, ale zamiast tego dopasuje linie, które w innym przypadku nie byłyby dopasowane. Ci, którzy chcą odwrócić kod powrotu (tzn. Odnieść sukces, jeśli wszystkie wiersze nie pasują do wzorca, a nie co najmniej jeden), powinni skorzystać! grep. Znajduje to zastosowanie w wyrażeniach warunkowych, npif ! ls | grep -qE ".(\.exe)$"; then echo No .exe files in $(pwd); fi. : .