Android

Komut satırını kullanarak Linux'ta dosyaları bulma

68 pardus öğreniyoruz uçbirim -terminal- komut çıktılarını dosyaya kaydetme

68 pardus öğreniyoruz uçbirim -terminal- komut çıktılarını dosyaya kaydetme

İçindekiler:

Anonim

find komutu Linux sistem yöneticileri cephaneliğindeki en güçlü araçlardan biridir. Kullanıcı tarafından verilen bir ifadeye dayalı olarak bir dizin hiyerarşisindeki dosyaları ve dizinleri arar ve eşleşen her dosya üzerinde kullanıcı tarafından belirtilen eylemi gerçekleştirebilir.

Dosyaları ve dizinleri izinlerine, türüne, tarihine, sahipliğine, boyutuna ve diğerlerine göre aramak için find komutunu kullanabilirsiniz. Ayrıca grep veya sed gibi diğer araçlarla birlikte kullanılabilir.

Linux Komut Sözdizimini find

Find komutunun genel sözdizimi aşağıdaki gibidir:

find

  • options özniteliği, sembolik bağlantıların, hata ayıklama seçeneklerinin ve en iyileştirme yönteminin işlenmesini denetler. path… özniteliği, find'ın dosyaları arayacağı başlangıç ​​dizinini veya dizinleri tanımlar. expression özniteliği, seçenekler, arama kalıpları ve operatörler tarafından ayrılmış eylemler.

Bir dizindeki dosyaları aramak için, find komutunu çağıran kullanıcının o dizinde okuma izinlerine sahip olması gerekir.

Aşağıdaki örneğe bakalım:

find -L /var/www -name "*.js"

  • -L (seçenekler) seçeneği, find komutuna sembolik bağlantıları izlemesini söyler. /var/www (yol…), aranacak dizini belirtir. (İfade) -name "*.js ile biten dosyaları aramayı söyler .js (JavaScript dosyaları).

Dosyaları İsme Göre Bul

Dosyaları ada göre bulmak büyük olasılıkla find komutunun en yaygın kullanımıdır. Bir dosyayı adıyla bulmak için, -name seçeneği, aradığınız dosyanın adını izledi.

Örneğin, /home/linuxize dizininde document.pdf adlı bir dosyayı aramak için aşağıdaki komutu kullanırsınız:

find /home/linuxize -type f -name document.pdf

Büyük / küçük harfe duyarlı olmayan bir arama yapmak için -name seçeneğini -iname ile -iname :

find /home/linuxize -type f -iname document.pdf

Yukarıdaki komut “Document.pdf”, “DOCUMENT.pdf”..etc ile eşleşecektir.

Uzantıya Göre Dosya Bul

Dosyaları uzantıya göre aramak, dosyaları ada göre aramakla aynıdır. Örneğin, /var/log/nginx dizininde .log.gz ile biten tüm dosyaları bulmak için şunları kullanabilirsiniz:

find /var/log/nginx -type f -name '*.log.gz'

Joker karakteri kullandığınızda, desen tarafından alıntı yapmanız veya yıldız işareti * sembolünden ters eğik çizgi ile kaçmanız gerektiğini belirtmek önemlidir, böylece kabuk tarafından yorumlanmaz.

Regex *.log.gz eşleşmeyen tüm dosyaları bulmak için *.log.gz seçeneğini kullanabilirsiniz. Örneğin, *.log.gz tüm dosyaları bulmak için:

find /var/log/nginx -type f -not -name '*.log.gz'

Türe Göre Dosya Bul

Bazen normal dosyalar, dizinler veya semboller gibi belirli dosya türlerini aramanız gerekebilir. Linux'ta her şey bir dosyadır.

Dosyaları türlerine göre aramak için, -type seçeneğini ve aşağıdaki tanımlayıcılardan birini kullanarak dosya türünü belirtin:

  • f : normal bir dosya d : dizin l : sembolik bağlantı c : karakter aygıtları b : blok aygıtları p : adlandırılmış yöneltme (FIFO) s : soket

Örneğin, geçerli çalışma dizinindeki tüm dizinleri bulmak için şunu kullanırsınız:

find. -type d

Yaygın örnek, chmod komutunu kullanarak web sitesi dosya izinlerini özyineli olarak 644 ve dizin izinlerini 755 değiştirmek olacaktır:

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Dosya Boyutuna Göre Bul

Dosyaları dosya boyutuna göre bulmak için, -size parametresini boyut ölçütleriyle birlikte -size . Dosya boyutunu belirtmek için aşağıdaki sonekleri kullanabilirsiniz:

  • b : 512 baytlık bloklar (varsayılan) c : bayt w : iki baytlık kelimeler k : Kilobayt M : Megabayt G : Gigabayt

Aşağıdaki komut, /tmp dizininde tam olarak 1024 baytlık tüm dosyaları bulur:

find /tmp -type f -size 1024c

find komutu ayrıca belirtilen boyuttan daha büyük veya daha küçük dosyaları aramanıza da olanak tanır.

Aşağıdaki örnekte, geçerli çalışma dizininde 1 1MB küçük tüm dosyaları arıyoruz. Boyut değerinden önceki eksi - sembolüne dikkat edin:

find. -type f -size -1M

find. -type f -size +1M

Boyut aralığındaki dosyaları bile arayabilirsiniz. Aşağıdaki komut 1 ve 2MB arasındaki tüm dosyaları bulur:

find. -type f -size +1M -size 21M

Değişiklik Tarihine Göre Dosya Bul

find komutu ayrıca son değişikliklerine, erişimlerine veya değişiklik sürelerine göre dosyaları arayabilir.

Boyuta göre arama yaparken olduğu gibi, artı ve eksi simgelerini “büyüktür” veya “küçüktür” için kullanın.

Birkaç gün önce güvercin yapılandırma dosyalarından birini değiştirdiğinizi, ancak hangisini unuttuğunuzu varsayalım. /etc/dovecot/conf.d dizini altındaki .conf ile biten ve son beş gün içinde aşağıdakilerle değiştirilmiş olan tüm dosyalara kolayca filtre /etc/dovecot/conf.d :

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Aşağıda, -daystart seçeneğini kullanarak dosyaları değiştirme tarihine göre filtrelemenin başka bir örneği verilmiştir. Aşağıdaki komut, /home dizininde 30 veya daha fazla gün önce değiştirilmiş tüm dosyaları listeler:

find /home -mtime +30 -daystart

İzinlere Göre Dosya Bul

-perm seçeneği, dosya izinlerine göre dosyaları aramanıza olanak tanır.

Örneğin, /var/www/html dizininde tam olarak 775 izinli tüm dosyaları bulmak için şunu kullanırsınız:

find /var/www/html -perm 644

Sayısal modun önüne eksi veya eğik çizgi / ekleyebilirsiniz.

Eğik çizgi / önek olarak kullanıldığında, bir dosyanın eşleşmesi için en az bir kategoride (kullanıcı, grup veya diğerleri) en az ilgili bitler ayarlanmış olmalıdır.

Aşağıdaki örnek komutu düşünün:

find. -perm /444

Yukarıdaki komut, kullanıcı, grup veya diğerleri için ayarlanmış okuma izinlerine sahip tüm dosyalarla eşleşir.

Eksi - önek olarak kullanılırsa, dosyanın en azından belirtilen bitlerle eşleşmesi için ayarlanması gerekir. Aşağıdaki komut, sahip ve grup için okuma ve yazma iznine sahip olan ve diğer kullanıcılar tarafından okunabilen dosyaları arar:

find. -perm -664

Dosya Sahibine Göre Bul

Belirli bir kullanıcının veya grubun sahip olduğu dosyaları bulmak için -user ve -group seçeneklerini kullanın.

Örneğin, linuxize kullanıcısının sahip olduğu tüm dosyaları ve dizinleri aramak için şunu çalıştırırsınız:

find / -user linuxize

İşte gerçek dünya örneği. Diyelim ki www-data kullanıcısının sahip olduğu tüm dosyaları bulmak ve eşleşen dosyaların sahipliğini www-data nginx değiştirmek istiyorsunuz:

find / -user www-data -type f -exec chown nginx {} ;

Dosyaları Bulma ve Silme

Eşleşen tüm dosyaları silmek için, eşleme ifadesinin sonuna -delete seçeneğini ekleyin.

Bu seçeneği yalnızca sonucun silmek istediğiniz dosyalarla eşleştiğinden eminseniz kullandığınızdan emin olun. -delete seçeneğini kullanmadan önce eşleşen dosyaları yazdırmak her zaman iyi bir fikirdir.

Örneğin .temp ile biten tüm dosyaları /var/log/ .temp silmek için şunu kullanabilirsiniz:

find /var/log/ -name `*.temp` -delete -delete seçeneğini son derece dikkatli kullanın. -delete komut satırı bir ifade olarak değerlendirilir ve önce -delete seçeneğini eklerseniz, komut belirttiğiniz başlangıç ​​noktalarının altındaki her şeyi siler.

Dizinler söz konusu olduğunda, find yalnızca rmdir aynı olan boş dizinleri silebilir.

Sonuç

find komutunun çeşitli seçenekler ve ölçütlerle nasıl kullanılacağını gösterdik.

Bu makalede, Linux sistemlerinizdeki dosyaları nasıl bulacağınız konusunda temel bir bilgi vermeniz gerekir. Ayrıca man find sayfasını ziyaret edebilir ve find komutunun diğer tüm güçlü seçenekleri hakkında bilgi edinebilirsiniz.

terminal bul