Poniższe wyrażenie grep z powodzeniem wyświetla wszystkie pliki .exe i .html w bieżącym katalogu i podkatalogach.
ls -R |grep -E .*[\.exe]$\|.*[\.html]$
Jak odwrócić ten wynik, aby wyświetlić listę tych, które nie są plikami .html lub .exe. (To znaczy !=
.)
-v
/--invert-match
niekoniecznie odwróci, czy kod powrotugrep
wskazuje 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
. : .lub
Możesz również zrobić to samo, używając
find
:Więcej informacji tutaj .
źródło
find
Komenda jest najbardziej semantycznej Rozwiązaniem tego problemu XY. Łączeniels
igrep
do tego celu wydaje się w najlepszym razie hacking. To powinna być zaakceptowana odpowiedź. (+1)Dodaj
-v
opcję dogrep
polecenia, aby odwrócić wyniki.źródło
źródło
Jak stwierdzono wielokrotnie, inwersję uzyskuje się poprzez
-v
opcjęgrep
. Pozwól, że dodam (mam nadzieję, zabawną) notatkę, że mógłbyś to sam odkryć, przeglądającgrep
tekst pomocy:źródło