logo

Örneklerle Linux/Unix'te Komutu Bulun

Find komutu, bir dizindeki belirli bir dosyayı bulmamıza yardımcı olur. İzin, kullanıcı sahipliği, değişiklik, tarih/saat, boyut ve daha fazlası gibi çeşitli koşullara ilişkin dosyaların listesini bulmak için kullanılır.

Unix benzeri ve diğer işletim sistemlerinde find komutu, dosyaları kullanıcı tarafından belirlenen birkaç formata göre bulan ve eşleşen tüm nesnelerin yol adını yazdıran veya başka eylemler istenirse bu eylemi uygulayan bir komut satırı yardımcı programıdır. tüm eşleşen nesneler.

Aramayı başlangıç ​​konumundan başlatır ve ardından hiyerarşik bir yapının (genellikle bir ağaç) dizinlerini (düğümlerini) yinelemeli olarak geçer. Find komutu, başlangıç ​​dizini altındaki tek veya daha fazla depolama aygıtına ait farklı dosya bölümleme sistemlerini arayabilir ve bu sistemlerden geçiş yapabilir.

Arama formatı, dosya adına veya değişiklik zamanına veya dosya erişim zamanına göre eşleştirme için zaman aralığına göre eşleştirmeye yönelik bir model içerir. Find komutu, varsayılan olarak geçerli çalışma dizini altındaki her dosyanın bir listesini sağlar. Ancak kullanıcılar aramayı başlangıç ​​dizininde istedikleri maksimum düzeyde sınırlayabilirler.

İlişkili konum belirleme programları, tüm dosya sisteminin ada göre aranması için daha hızlı bir teknik sağlamak üzere fine komutundan elde edilen dizinli bir dosya veritabanını uygular.

Bulma yardımcı programı varsayılan olarak çoğu öğeyle birlikte gelir. Linux dağıtımları yani herhangi bir ek paket kurmamıza gerek yok. En önemli ve kullanılan komutlardan biridir. Linux sistem.

 find 

Bu iki seçenek, bulma işleminin sembolik bağlantıları nasıl dikkate alması gerektiğini belirler. Varsayılan doğa hiçbir zaman sembolik bağların peşinde koşmamaktır. Bayrak, yani -L , bulmayı sembolik bağlantıların peşine düşmeye yönlendirecektir. Bayrak, yani -H , komut satırı argümanlarına devam ederken sadece sembolik bağları takip edecektir. Bayraklar, find komutu için POSIX standardında belirtilmiştir. Temel bir uzantı bir bayraktır, yani. -P , sembolik bağlantı takibini açıkça devre dışı bırakmak için.

En azından bir yolun ifadeyi öngörmesi gerekir. Find komutu joker karakterleri dahili olarak yorumlayabilir ve kabuk küreselleşmesini yönetmek için komutların dikkatli bir şekilde alıntılanması gerekir.

İfade bileşenleri, genellikle kabuk sözdiziminde boşluk olarak gösterilen komut satırı bağımsız değişken sınırıyla izole edilir. Sol taraftan sağ tarafa doğru değerlendirilirler. VEYA ve VE gibi mantıksal bileşenlerin yanı sıra yüklemleri (eylemler ve filtreler) içerebilirler. GNU find, POSIX tarafından belirtilmeyen diğer birçok özelliği içerir.

Dizini belirtmek için aşağıdaki semboller kullanılır:

(.) : Geçerli dizin adı için

(/) : Kök dizin için

Bul Komutunun Kısa Tarihçesi

Find komutu Unix Sürüm 5'te bir öğe olarak ortaya çıktı. Programcı Tezgahı proje tarafından belirtildi ve Dick Haight birlikte kullanılmak üzere geliştirilen cpio ile.

Başlangıçta, find komutunun GNU uygulaması şu şekilde belirtilmişti: Eric Decker . Daha sonra tarafından geliştirildi. David MacKenzie, Tim Wood , Ve Jay Plett . Ayrıca find komutu IBM i OS'ye taşındı.

java int'yi ikiye katlamak

Yüklemler

Yaygın olarak kullanılan primerler şunlardır:

maven nedir
    -isim modeli:Dosya adının verilen kabuk glob deseniyle aynı olup olmadığını kontrol eder.-tip türü:Dosyanın sağlanan türde olup olmadığını kontrol eder.-Yazdır:Her zaman gerçek değeri verir. Geçerli dosya adını ve yeni satırı stdout'a yazdırır.-baskı0:Her zaman gerçek değeri verir. Geçerli dosya adını ve boş bir karakteri stdout'a yazdırır. POSIX tarafından gerekli değildir.-exec programı [argüman ...];:Her zaman gerçek değeri verir. Verilen sabit argümanlar ve geçerli dosya yolu ile bir programı çalıştırır.-exec programı [argüman ...] { } +:Her zaman gerçek değeri verir. Bir programı sabit verilen argümanlarla ve mümkün olduğu kadar çok yolla çalıştırır. Hemen hemen her uygulama için, diğer {} oluşumları verilen adın fazladan kopyaları anlamına gelir (özellik POSIX tarafından gerekli değildir).-tamam program [argüman...];:-exec ile aynıdır ancak program 0 verirse false veya true değerini döndürür.

İfadenin -ok, -exec, -print veya -print0'dan hiçbirini kullanmaması durumunda, koşulların doğru olması durumunda -print uygulamasının varsayılanlarını bulun.

Operatörler

Operatörler bulma komutu ifadelerini geliştirir. Azalan öncelik sırasına göre bahsedilmektedir:

    (ifade):Bu operatör önceliği zorlayabilir.! ifade:Eğer expr false değerini döndürürse true değerini döndürür.
  • ifade1 ifade2 (veya ifade1 -a ifade2 : VE.ifade2, ifade1 yanlışsa değerlendirilmez.
  • ifade1 -o ifade2 : VEYA. ifade1 doğruysa ifade2 değerlendirilmez.

Bul Komutu örnekleri

Find komutunun aşağıdaki örneklerini görelim:

Dosyaları ada göre bulun

'.txt' uzantısıyla biten tüm dosyaları arayabiliriz. Bunu yapmak için aşağıdaki komutu yürütün:

 find . -name '*.txt' 

Yukarıdaki komut geçerli çalışma dizinindeki tüm metin dosyalarını listeleyecektir. Aşağıdaki çıktıyı göz önünde bulundurun:

Linux Bul

Yukarıdaki çıktıdan '.txt' uzantılı tüm dosyalar find komutu ile listelenir.

Dosyaları türe göre bulma

Dosya tipini belirtmek için '-type' parametresi kullanılır.

Dosya türlerinden bazıları aşağıdaki gibidir:

  • f: normal dosya
  • d: dizin
  • l: sembolik bağlantılar
  • c: karakter cihazları
  • b: cihazları engelle

Aşağıdaki komutu göz önünde bulundurun:

 find . -type d -name '*.bak' 

Yukarıdaki komut '.bak' uzantısına sahip tüm dizinleri listeleyecektir. Aşağıdaki çıktıyı göz önünde bulundurun:

Linux Bul

Yukarıdaki çıktıdan 'find' komutu gelir. -type d -name '*.bak', '.bak' ile biten tüm dizinleri görüntülüyor.

Daha yeni dosyalar bulun

'-newer' parametresi, bahsedilen dosyadan daha yeni olan dosyaların aranmasına yardımcı olur. Aşağıdaki komutu göz önünde bulundurun:

 find . -newer msg.txt 

Yukarıdaki komut, geçerli çalışma dizinindeki ' msg.txt' dosyasından daha yeni olan tüm dosyaları görüntüleyecektir. Aşağıdaki çıktıyı göz önünde bulundurun:

Linux Bul

Yukarıdaki çıktıya göre görüntülenen tüm dosyalar 'msg.txt' dosyasından daha yenidir.

Dosya bulma ve silme

'-delete' seçeneği belirli bir dosyayı silmek için kullanılır. Bu komutu kullanırken çok dikkatli olmamız gerekiyor çünkü bir kere çalıştırıldığında geri alma seçeneği yok. Aşağıdaki komutu göz önünde bulundurun:

 find . -name Demo.txt -delete 

Yukarıdaki komut 'Demo.txt' dosyasını mevcut çalışma dizininden silecektir. Aşağıdaki çıktıyı göz önünde bulundurun:

Linux Bul

Bir dizin bulun

Bir dizini bulmak için 'type -d' seçeneği kullanılır. Aşağıdaki komutu göz önünde bulundurun:

 find . type -depth -name Newdirectory 

Yukarıdaki komut 'Yeni Dizin' konumunu bulacaktır. Aşağıdaki çıktıyı göz önünde bulundurun:

Linux Bul

Dosyaları değişiklik zamanına göre bulun

Dosyaları değiştirerek bulmak için '-mtime' seçeneği ve ardından gün sayısı kullanılır. Gün sayısı pozitif veya negatif olabilir. Negatif değer, son gün için -1 kullanıldığından daha az bir değer için kullanılacaktır ve benzer şekilde +1, bir günden daha uzun bir süre öncesine ait dosyayı bulacaktır. Aşağıdaki komutu göz önünde bulundurun:

 find ./Newdirectory -mtime -1 

Yukarıdaki komut son gün içinde değiştirilen dosyaları bulacaktır. Aşağıdaki çıktıyı göz önünde bulundurun:

Linux Bul

Dosyaları izne göre bulma

'-Perm' seçeneği, dosyaları izne göre bulmak için kullanılır. Find komutunu '-perm' seçeneğiyle yürütün ve gerekli değeri iletin. Aşağıdaki komutu göz önünde bulundurun:

 find ./ -perm 777 

Yukarıdaki komut, belirtilen dizindeki herkesin okuyabileceği, yazabileceği ve çalıştırabileceği dosyaları listeleyecektir.

Dosyaları bulma ve değiştirme

Dosyaları bulmak ve değiştirmek için find komutunu sed komutuyla birleştirmemiz gerekir. Dosyalar üzerinde işlem yapmak için find komutuyla birlikte '-exec' seçeneğini kullanın. Aşağıdaki komutu göz önünde bulundurun:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

Yukarıdaki komuttan belirtilen oluşum değiştirilecektir. Aşağıdaki çıktıyı göz önünde bulundurun:

Linux Bul

Birden çok dosya içindeki metni bulun

Çeşitli dosyalardan metni bulmak için find komutunun grep komutuyla başka bir kombinasyonunu yapabiliriz. Aşağıdaki komutu göz önünde bulundurun:

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

Yukarıdaki komut, 'Yeni Dizin' dizini içindeki tüm metin dosyalarından 'demo' metnini içeren satırları bulacaktır. Aşağıdaki çıktıyı göz önünde bulundurun:

Linux Bul

Yukarıdaki çıktıdan 'demo' metninin görüntülendiği satırları görebiliriz.

java elseif

Her dizinde ara

 $ find / -name file1 -type f -print 

Yukarıdaki komut, başlığı dosya1 olan normal bir dosyanın tüm dizinlerini bulur ve ekrana yazdırır. Genellikle dosyaları bu şekilde aramak iyi bir fikir değildir. Oldukça zaman alabilir. Bu nedenle, dizinden bahsetmek en iyisidir. Birkaç işletim sistemi, find komutuna uygun olmayan dosya sistemlerini (dinamik) bağlayabilir. Kabuğa özgü karakterler içeren daha karmaşık dosya adlarının tek tırnak içinde kapatılması gerekebilir.