Unix işletim sisteminde komut satırında kullanabileceğiniz basit ama çok etkili komutlar bulunuyor: sed, awk, grep, find gibi. Bu yazıda find komutunu ele alacağız. find komutu ile dosyanın adı, boyutu, erişim zamanı, tipi, erişim hakları gibi farklı kriterlere göre dosyalar ya da dizin üzerinde arama işlemi gerçekleştirilebilir. find komutu üç bölümden oluşur:
- Arama işleminin hangi dizinde yapılacağı
- Arama kriterleri
- Kritere uyan dosyalarla ne tür bir işlem yapılacağının tanımı
find komutu genel yapısı |
/practices dizini altındaki tüm dosya ve dizinlerin listesini alalım:
find /practices
find /
find
find / -print
find /practices -regextype posix-extended -regex ".*\.(py|sh)$" -print
find /practices -regextype posix-extended -regex ".*\.(py|sh)$" -exec chmod +x {} \;
find /practices -regextype posix-extended -regex ".*\.(py|sh)$" -ok chmod +x {} \;
- Tipe göre arama
- -type f (dosya aranıyor)
- -type d (dizin aranıyor)
- -type l (sembolik link aranıyor)
- -type b (blok cihaz aranıyor, örneğin disk)
- -type c (karakter cihaz aranıyor, örneğin terminal)
- Dosyanın boyutuna göre arama
- -size +100M (100MB'dan büyük dosyalar aranıyor)
- -size 1G (tam tamına 1GB boyutunda dosyalar aranıyor)
- -size -100k (100kb'dan daha küçük dosyalar aranıyor)
- Dosyanın sahibine göre arama
- -uid 512 (512 uid değerine sahip kullanıcının dosyaları arasında aranıyor)
- -user jack (jack isimli kullanıcının dosyaları arasında aranıyor)
- Dosyanın güncellenme zamanına göre arama
- -mtime +365: Son 1 yıldır içeriği değişmeyen (aynı kalan) dosyalar
- -mtime -7: Son bir hafta içinde içeriği değiştirilen dosyalar
- Dosyanın erişim zamanına göre arama
- -atime +365: Son 1 yıldır erişilmeyen dosyalar
- -atime -7: Son bir hafta içinde erişilen dosyalar
- -atime 3: tam 3 gün önce erişilen dosyalar
- Dosyanın erişim haklarına göre arama
- -perm /+x: çalıştırılabilir dosyalar, bunun yerine basitçe -executable seçeneği de kullanılabilir.
Yukarıda en temel arama kriterleri verilmiştir. Arama kriterlerinin tamamı için kullanım kılavuzuna başvurabilirsiniz.
Aranan dosyalar üzerinde yapabilecek işlemler:
- -delete: bulunan dosyayı siler
- -exec komut: verilen komutu bulunan dosya üzerinde çalıştırır
- -ok komut: verilen komutu bulunan dosya üzerinde çalıştırır, çalıştırmadan önce kullanıcıdan onay ister
- -print format: bulunan dosyanın bilgilerini verilen formatta listeler
Yukarıda en temel işlemler verilmiştir. Dosya ya da dizin üzerinde uygulayabileceğiniz işlemlerin tamamına kullanım kılavuzundan ulaşabilirsiniz.
Örnek Kullanımlar
Bir haftadan daha yaşlı ve bir haftadır erişilmeyen core isimli dosyaları silmek istiyoruz:
Bir haftadan daha yaşlı ve bir haftadır erişilmeyen core isimli dosyaları silmek istiyoruz:
find . -name core -type f -atime +7 -mtime +7 -ok rm {} \;
find . \( -name core -o -name a.out -o -name *.o -a -type f \) -ok rm {} \;
find . -empty -exec ls {} \;
find / -perm /o=t
find /var/log -newer /var/log/server.log
find /var/log -ctime +0 -type f -exec compress {} \; find /var/log -mtime +7 -type f -exec rm {} \;
No comments:
Post a Comment