Znajdowanie plików, dla których polecenie nie działa

26

Chciałbym rekurencyjnie znaleźć wszystkie pliki, dla których skrypt, który akceptuje plik jako argument, zwraca wartość niezerową. Masz pomysł, jak to zrobić, używając narzędzia „znajdź” lub podobnego narzędzia?

mitanyen
źródło

Odpowiedzi:

38

findDo tego -execmożna użyć akcji:

find . \! -exec yourscript {} \; -print

wypisze nazwy wszystkich plików, których yourscriptnie powiodło się.

-execmożna wykorzystać w ten sposób, aby zamienić odpowiednie polecenia zewnętrzne w findtesty.

Możesz ograniczyć pliki, które są testowane, dodając findwcześniej testy -exec; na przykład, aby ograniczyć kandydatów do zwykłych plików, dodaj -type f:

find . -type f \! -exec yourscript {} \; -print
Stephen Kitt
źródło
8
Równoważnie, stosując -o(a) find . -exec yourscript {} \; -o -print.
John Kugelman wspiera Monikę