Normalde bu komut tarzını grep
birkaç 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 grep
için verilen argümanlarla ve her dosyanın adını kullanarak yürütmek .
-xdev
Argü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 f
sadece 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 grep
içindeki dosyalarda çalışır - sadece grep
dizinde çalışmaz, yine de çalışmaz). Ve dosya adını her zaman çıktısında yazdırmasını söyleme -H
seçeneği grep
.
find
Dosya 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 -2M
2 megabayttan daha küçük dosyalar anlamına gelir. -mtime -5
Son 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 find
Olası filtrelerin tam listesini görmek için göz atın .
Permission denied
hata yazdırıyor mu? Kök veya normal bir kullanıcı olarak mı çalıştırdınız?