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
İ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:
- 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
- Dosyaları türe göre bulma
- Daha yeni dosyalar bulun
- Dosya bulma ve silme
- Bir dizin bulun
- Dosyaları değişiklik zamanına göre bulun
- Dosyaları izne göre bulma
- Dosyaları bulma ve değiştirme
- Birden çok dosya içindeki metni bulun
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:
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:
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:
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:
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:
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:
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:
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:
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.