Normalde bu komut tarzını grepbirkaç dosya üzerinden çalıştırmak için kullanırım :
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
Bunun gerçekte yaptığı şey, sistemdeki her dosyanın bir listesini yapmak ve sonra her dosya grepiçin verilen argümanlarla ve her dosyanın adını kullanarak yürütmek .
-xdevArgüman diğer dosya sistemlerini görmezden gerektiğini bulmak söyler - Bu gibi özel dosya sistemlerini kaçınmak için iyidir /proc. Bununla birlikte, normal dosya sistemlerini de görmezden gelir - örneğin, / home klasörünüz farklı bir bölümdeyse, aranmaz - söylemeniz gerekir find / /home -xdev ....
-type fsadece dosya aramak anlamına gelir, böylece dizinler, aygıtlar ve diğer özel dosyalar göz ardı edilir (yine de dizinlere tekrar girer ve grepiçindeki dosyalarda çalışır - sadece grepdizinde çalışmaz, yine de çalışmaz). Ve dosya adını her zaman çıktısında yazdırmasını söyleme -Hseçeneği grep.
findDosya listesini filtrelemek için her türlü seçeneği kabul eder. Örneğin, -name '*.txt'yalnızca .txt ile biten dosyaları işler. -size -2M2 megabayttan daha küçük dosyalar anlamına gelir. -mtime -5Son beş günde değiştirilen dosyalar anlamına gelir. Bunları -a için ve ve -o ile veya ile birlikte birleştirin ve ifadeleri gruplamak için '('parantez ')'kullanın (kabuğun bunları yorumlamasını önlemek için tırnak içine alın). Yani örneğin:
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
man findOlası filtrelerin tam listesini görmek için göz atın .
Permission deniedhata yazdırıyor mu? Kök veya normal bir kullanıcı olarak mı çalıştırdınız?