Zwykle używam tego stylu poleceń do uruchamiania grepwielu plików:
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
W rzeczywistości robi to listę wszystkich plików w systemie, a następnie dla każdego pliku wykonuje się grepz podanymi argumentami i nazwą każdego pliku.
-xdevTeza mówi, że musi znaleźć ignorować inne systemy plików - jest to dobre dla uniknięcia specjalnych systemów plików, takich jak /proc. Jednak zignoruje również normalne systemy plików - więc jeśli na przykład folder / home znajduje się na innej partycji, nie zostanie przeszukany - trzeba by powiedzieć find / /home -xdev ....
-type foznacza wyszukiwanie tylko plików, więc katalogi, urządzenia i inne pliki specjalne są ignorowane (nadal będzie się powtarzało w katalogach i będzie działać grepna plikach w nim zawartych - po prostu nie uruchomi się grepna samym katalogu, co i tak by nie działało). I -Hopcja grepnakazująca mu zawsze drukować nazwę pliku na wyjściu.
findakceptuje wszelkiego rodzaju opcje filtrowania listy plików. Na przykład -name '*.txt'przetwarza tylko pliki z rozszerzeniem .txt. -size -2Moznacza pliki mniejsze niż 2 megabajty. -mtime -5oznacza pliki zmodyfikowane w ciągu ostatnich pięciu dni. Połącz je razem z -a dla i i -o dla lub i użyj '('nawiasów ')'do grupowania wyrażeń (w cudzysłowach, aby zapobiec ich interpretacji przez powłokę). Na przykład:
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
Spójrz na, man findaby zobaczyć pełną listę możliwych filtrów.
Permission deniedbłędów? Czy uruchomiłeś go jako root lub zwykły użytkownik?