Guido Socher

Yazar Hakkında: Linux'u seviyor. Çünkü ücretsiz ve yaygın bir sistem. Bir başka neden de Dünya'nın her yanındaki Linux topluluğundan insanlarla çalışmanın eğlenceli yanları olması. Boş zamanlarını, genellikle, kız arkadaşıyla, radyo dinlemekle, şehir dışıda bisiklet sürmekle ve Linux'la eğlenmekle geçirir.

Yazara yazınız

 

Dosyaların Aranıp Bulunması

Çeviri: İTÜ Fen-Edebiyat Fakültesi Öğrencilerinden Bir Grup

 

İzet: Bu yazı, dosyaların, ada ve içeriğe göre, nasıl bulunacağı hakkında giriş düzeyinde bilgi vermektedir.



Dosyaların Ada Göre Bulunması

Sanırım şu sorunu anımsayacaksınız: Birkaç çeşit dosyanız var ve onları nereye koyduğunuzu anımsayamıyorsunuz.

Bu durumda find buyruğunu kullanmak elverişlidir. Peki nasıl kullanılır? find elbette ki büyük bir elyordam sayfası (manual page) ile gelmektedir. Fakat biz yine de bazı "normal durumlar" bir göz atalım. Dizin ağacında içinde bulunulan dizinden başlayarak adı lostfile.txt olan bir dosyayı arayıp bulmak için:

find . -name lostfile.txt -print

find yaban kartlarını da (wild cards) kabul eder. Yaban karakterlerinin tek tırnaklar arasında verilmesi gerektiğini, aksi durumda kabuğun onları find üzerinde kullanmadan önce açacağını unutmamak gerekmektedir. İşte bir örnek:

find . -name "lost*" -print

Büyük bir dizin ağacını aramak gerektiğinde bu buyruk oldukça yavaş kalabilir. Bu durumda locate buyruğu yardımcı olabilir. Ama o dosya sistemindeki bir dosyayı doğrudan araştıramaz. Veritabanı üzerinde araştırma yapar. Bu daha hızlı olur ama veritabanı güncelliğini yitirmiş olabilir. Bazı sürümlerde located veritabanı her gece güncellenebilmektedir ama kuşkusuz updatedb buyruğunu vererek zaman zaman güncelleme yapabilmek mümkündür. locate alt katar (substring) araması yapar.

locate lostfile

Bu, lostfile.txt veya mylostfile.txt ve benzeri dosyaların konumlarını saptayacaktır.

Bu ana kadar, dosya adını tam olarak bildiğimiz dosyaları bulmak için çalışıyorduk. Dosya adı, belki de, lostfile.txt değil lastfile.txt, leastfile.txt, lostfiles.txt, Lotsfile.txt veya lostfile.text olabilir ve siz dosya adını tam olarak anımsamayabilirsiniz. Bu durumda dosyayı nasıl bulabilirsiniz? Bu durumda, yanlışlara karşı hoşgörülü ftff adlı bir yazılımdan yararlanabilirsiniz. ftff dosyayıyı ararken belli sayıda imlâ yanlışına izin verir. Bu buyruk, bütün "yazım yanlışlı" dosya adlarını bulacaktır:

ftff lostfiles.txt

İzin verilen yazım yanlışlarının sayısı, dosyanın uzunluğuyla ilgili olmakla birlikte -t seçeneğiyle de ayarlanabilir. En çok 2 yanlışa izin verirken bir de yaban kartı kullanmak istiyorsaniz şunu yazın:

ftff -t2 "lostfiles*"

Ftff benim kendi tasarımım olan whichman-1.4 adlı ve

sunsite.unc.edu/pub/Linux/apps/doctools/whichman-1.4.tar.gz 

adresinden ulaşabileceğiniz bir programdır.

Bazan, dizinler içinde belli bir katarı içermeyen bütün dosyaları; örneğin .o ve .c dışındaki dosyaları bulmak isteyebilirsiniz. Bu istediğimizi yapmak için bir iki seçeneğimiz bulunmaktadır:

find . ! -name "*.o" ! -name "*.c" -print

find . -print | fgrep -v '.o' | fgrep -v '.c'

eğer find'ın gnu sürümüne sahipseniz:

find | fgrep -v '.o' |
fgrep -v '.c'

find | egrep -v '\.[oc]'

Dosya Sistemine Genel Bir Bakış

Bazan önünüzdeki dosya sistemine tepeden bir göz atmak isteyebilirsiniz. Örneğin yeni bir CD'niz var ve içinde neler olduğunu görmek istiyorsunuz. Yalnızca ls -R buyruğunu kullanmanız yeterlidir. Kişisel olarak, okunabilirlik açısından ( sunsite.unc.edu/pub/Linux/utils/file/tree-1.2.tgz)'nin çizdiği ağaç benzeri çizemleri yeğliyorum.

tree

ya da uzun dosya adlarıyla:

tree -fF

Ve kuşkusuz bizim bir de eski iyi find'ımız var. Genellikle, Linux'la birlikte gelen, find'ın gnu sürümü, dosya adının yanısıra büyüklüğünü de görüntüleyebilen basım biçimlerine sahiptir:

find . -ls

find . -print or with gnu find: find

find . -printf "%7s %p\n"

Ayrıca ls buyruğuyla benzer işler yapan bir perl sarmalayıcısı da bulunmaktadır. Onu buradan yöreyeçekebilirsiniz : lsperl.gz. Elaygıtların'a (tools) bir göz atarak daha çok dosya bulunabilir, ama öoğu durumda bu yeterli olmanın ötesine düşer.


İçerik ile dosya bulma (dosyalarda metin katarlarının aranması)

Dosyalarda metin katarlarını aramak için bulunan standart kolaylıklar düzgün anlatım (regular expression) aramaları için grep/egrep ve sözcük katarlarını aramak için fgrep kullanılır. İçinde bulunulan dizindeki bütün dosyalar içinde bir anlatım aramak icin şunu yazın:

egrep -i "search expression" *

Dizin ağacı içinde, bütün dosyaların içindeki katarları aramak için, find ve diğer dosya adı tarama buyruklarını sözgelimi grep ile birleştirebilirsiniz. Bu çeşitli yollarla yapılabilir:

egrep -i "expression" `find . -type f -print`

find . -type f -exec egrep -i "expression" /dev/null {}
\;

find . -type f -print | xargs egrep -i "expression"

Bunları anımsamak zor geliyorsa, buradan yöreyeçekebileceğiniz : grepfind.gz adlı küçük kabuk yazımını kullanabilirsiniz. Bu yazım (script), bir ikilitaban dosyasını (binary file) kaza sonucu egrep'lemeniz durumunda görüntülenemeyen karakterlerin devre dışı bırakıldığı konusunda güvence sağlar.

Agrep çok ilginç bir arama programıdır. Agrep aslında egrep gibi çalışır, ama aramalarda hoşgörü (tolerans) sağlar. Bu nedenle biraz yanlış yazılmış sözcükleri de bulabilirsiniz. Bir anlatım (expression) aramak ve en çok iki yazım yanlışına izin vermek için şunu kullanabilirsiniz:

agrep -i -2 "search exprission" *

Bu agrep programı bu sanalyöreden sunsite.unc.edu/pub/Linux/utils/text/agrep-2.04.tar.Z ya da köken sanalyöreden ftp://ftp.cs.arizona.edu/agrep/ yöreyeçekilebilir.

Böyle birşey daha var: glimpse. Glimpse çok güçlü bir arama kullandırımıdır. O, bulmak için locate'e benzer bir kavramı kullanır. Önce bir veritabanı yapılandırılmasını gerektirir ama bunu izleyen arama çok hızldır. İçinde bulunulan dizinden başlayarak tüm dosyaların içerikleri için bir arama yapılandırımı şu biçimde verilebilir:

glimpseindex .

Bundan sonra, bir katarı daha önceden indekslenmiş tüm dosyalar içinde arayabilirisiniz.

glimpse -i -2 "search exprission"

glimpse de, agrep gibi yanlışa hoşgörülü (fault tolerant) olup -2 parametresiyle iki tane yanlışa izin verilir. glimpse http://glimpse.cs.arizona.edu/'dan yöreyeçekilebilir.


Unix ve özellikle Linux için çok sayıda arama kullandırımları bulunmkatadır. Bu yazı böylesine tam sayılamaz. Eğer buna benzer daha çok sayıda aldatmaca (trick) ve kullandırım (utility) ile ilgilenmek isterseniz ftp://sunsite.unc.edu/pub/Linux/utils altındaki .lsm dosyalarına bakabilirsiniz.

İyi eğlenceler, mutlu aramalar.

Ana Sayfaya

Bu sanalyörenin bakımı Miguel Angel Sepulveda tarafından yapılmaktadır.
© Guido Socher 1998
LinuxFocus 1998