close

Bul (Unix)

Gezinmeye atla Aramaya atla

find , Unix ve Unix benzeri işletim sistemlerinin ve daha genel olarak , dosya sisteminde belirtilen kriterleri karşılayan dosya ve dizinleri tekrarlayan ve adlarını listeleyen POSIX [1] ve GNU [2] sistemlerinin bir komutudur. veya bulunan sonuçlar için bir komut çalıştırarak. [3]

Sözdizimi

find'in genel sözdizimi şöyledir:

bul [ seçenekler ] [-] dir1 [ dir2 …] [ direktif1 …]

Dir parametreleri , aranacak dizinleri gösterir .

Yönerge parametreleri , hem arama kriterlerini hem de yapılacak işlemleri belirtir.

Çift çizgi --(isteğe bağlı), aşağıdaki parametrelerin seçenek olarak kabul edilmeyeceğini belirtir.

Seçenekler

Ana seçenekler arasında:

-H
Komut parametrelerinde sembolik bağlar belirtilirse , karşılaştırmalar için sembolik bağlarınkiler değil, sembolik bağların başvurduğu gerçek dosyaların veya dizinlerin (varsa) öznitelikleri dikkate alınır. Bu, yalnızca find komutunun parametreleri için geçerlidir ve arama sırasında karşılaşılan öğeler için geçerli değildir.
-L
Sembolik bağlar söz konusu olduğunda, sembolik bağlarınkiler değil, sembolik bağların gösterdiği gerçek dosya ve/veya dizinlerin öznitelikleri dikkate alınır. Bu, hem arama sırasında karşılaşılan sembolik bağlar hem de find parametrelerinde belirtilen herhangi bir sembolik bağ için geçerlidir .

Yönergeler

Yönergeler, söz konusu dosya veya dizinde gerçekleştirilecek, geçilebilecek veya geçilemeyecek testleri belirtir veya eylemleri gerçekleştirir ve hatta find davranışını değiştirir .

En yaygın direktifler arasında şunlar yer alır:

-name modello
Dosya veya dizin adı belirtilen kalıpla eşleşiyorsa testi geçin . Kalıp, glob kalıplarının sözdizimine göre bir dizedir , örneğin *.mp3veya main.[ch]( metin kabuğunun nasıl çalıştığıyla ilgili olarak, tek veya çift tırnak içinde veya her meta karakterden önce bir ters eğik çizgi ile belirtilmelidir ).
-type tipo
Dosya türü belirtilenle eşleşiyorsa testi geçin. type , şu şekilde olabilen bir karakterdir:
-user utente_o_UID
Dosyanın veya dizinin sahibi belirtilen kullanıcıysa testi geçer. Kullanıcı, kullanıcı adı veya sayısal kullanıcı tanımlayıcısı ile belirtilebilir.
-group gruppo_o_GID
Dosyaya veya dizine atanan grup belirtilen grup ise testi geçin. Grup, adıyla veya sayısal grup tanımlayıcısıyla belirtilebilir .
-nouser
Dosya veya dizinin sahibi sistemde tanımlanan kullanıcılar arasında değilse testi geçin.
-nogroup
Dosya veya dizine atanan grup sistemde tanımlanan gruplar arasında değilse testi geçin.
-mindepth
Alt dizinler içindeki aramanın minimum derinliğini ifade eder.
-maxdepth
Alt dizinlerdeki aramanın maksimum derinliğini ifade eder.
-atime giorni
Dosyaya veya dizine son okuma erişim tarihi bugünden belirtilen gün sayısı çıkarıldığında testi geçer. Daha sonraki bir tarihi belirtmek için öneki kullanabilirsiniz +(örn +10. ). Daha önceki bir tarihi belirtmek için öneki kullanabilirsiniz -(örn -4. ).
-mtime giorni
Dosyanın veya dizinin son değiştirilme tarihi bugün eksi belirtilen gün sayısıysa testi geçer. Daha sonraki bir tarihi belirtmek için öneki kullanabilirsiniz +(örn +10. ). Daha önceki bir tarihi belirtmek için öneki kullanabilirsiniz -(örn -4. ).
-ctime giorni
Dosyanın veya dizinin oluşturulma tarihi bugün eksi belirtilen gün sayısıysa testi geçin. Daha sonraki bir tarihi belirtmek için öneki kullanabilirsiniz +(örn +10. ). Daha önceki bir tarihi belirtmek için öneki kullanabilirsiniz -(örn -4. ).
-newer nome_file
İncelenen dosya veya dizinin son değiştirilme tarihi belirtilen dosya adından sonraysa testi geçer .
-prune
Testi her zaman geçer ve incelenen öğe bir dizinse, aramaya inmez. Aramaların her zaman bir dizinden başladığını unutmayın, bu nedenle özyinelemeyi önlemek için bu yönergeyi tek başına belirtmek yeterli değildir, ancak başlangıç ​​dizinine inmeye izin veren bir ifade oluşturulmalıdır.
-perm
Dosya izinlerine göre filtrelemek için kullanılır. [3]
-print
Dosyanın veya dizinin adını standart çıktıya yazar .
-exec comando [arg1 …];
arg parametreleriyle belirtilen komutu, içlerindeki sırayı {}söz konusu dosya veya dizinin adıyla değiştirerek yürütür. Parametrelerin sonuncusu ;, yönergenin terimini belirten karakter olmalıdır ( metnin kabuğunun nasıl çalıştığıyla ilgili olarak, tek tırnak veya çift tırnak arasında veya önünde bir ters eğik çizgi ile belirtilmelidir , örneğin ';'veya ile \;). Örneğin
bulmak. -type f -name "* .bak" -exec rm {} \;
rm.bak komutunu, bulunan dosya sayısı kadar çalıştırarak uzantılı dosyaları arayın ve kaldırın ;
-exec comando [arg1 …] {} +
arg parametreleriyle belirtilen komutu yürütür ve bunlara bulunan dosya veya dizinlerin adlarını ayrı parametreler olarak ekler. Örneğin
bulmak. -type f -name "* .bak" -exec rm -f {} +
rm komutunu yalnızca bir kez (veya bulunan öğelerin sayısı bir komut için belirtilebilecek maksimum parametre sayısını aşıyorsa daha fazla kez ).bak yürüterek uzantılı dosyaları arar ve kaldırır , etkin bir şekilde xargs komutuyla birlikte kullanım sağlar . Ancak seçeneğin bu ikinci biçimi öncekinden daha yenidir ve bu nedenle eski find uygulamalarının bunu desteklememesi mümkündür.-exec

İki yönerge, birbiri ardına belirtilerek veya operatörün araya eklenmesiyle birleştirilebilir (mantıksal AND) -a. Örneğin, ifade, alice-type f -user alice kullanıcısına ait dosyaları aradığınızı belirtir . İlk direktif testi geçemezse , kısa devre değerlendirmesine göre ikincisi dikkate alınmaz .

Operatör araya girilerek alternatif olarak aralarına (mantıksal VEYA) iki veya daha fazla yönerge yerleştirilebilir -o. Örneğin, ifade , adı bruno ile biten veya kullanıcıya ait -name "*.h" -o -user brunoolan dosyaları veya dizinleri aradığınızı belirtir . İlk direktif testi geçerse , kısa devre değerlendirmesine göre ikincisi dikkate alınmaz . .h

Yönergeler yuvarlak parantez içine alınarak gruplandırılabilir. Örneğin, ifade carla kullanıcısına ait dosyaları veya daniele kullanıcısına ait dizinleri ( -type f -user carla ) -o ( -type d -user daniele )aradığınızı belirtir . Bazı kabuklarda ( Bash gibi ), parantezlerin önüne bir ters eğik çizgi koyarak korumanız gerekir , örneğin ve , aksi takdirde bu normal kabuk sözdizimi ile çelişir . \(\)

Bir yönerge, önüne bir ünlem işareti ( !) koyarak olumsuzlanabilir. Örneğin, ifade ! -type d, dizinler dışındaki öğeleri aradığınızı belirtir.

Örnekler

Normal dosyalar için geçerli dizini ve tüm alt dizinlerini arayın:

bulmak. -type f -baskı

En son on günden daha kısa bir süre önce değiştirilen normal dosyalar için dizinleri /tmpve alt dizinlerini arayın ve bunları birer birer silin:/var/tmp

bul / tmp / var / tmp -type f -mtime -10 -exec rm -f {} \;

Önceki örnekte olduğu gibi, ancak dosyaları toplu olarak silin:

bul / tmp / var / tmp -type f -mtime -10 -exec rm -f {} +

Dosya veya dizin olmayan herhangi bir şey için geçerli dizini ve tüm alt dizinlerini arayın ( örn .

bulmak. ! \ (-type f -o -type d \) -yazdır

Geçerli dizindeki her şeyi alt dizinlere inmeden listeleyin (özel isme sahip olduğundan yalnızca geçerli dizinle çalıştığını unutmayın .):

bulmak. ! -isim. -kuru erik -baskı

AIX 6.1'de bu sözdizimi çalışmaz. Aynı sonucu elde etmek için, aynı zamanda mevcut dizin dışındaki dizinlerde de şunu yürütün:

/tmp/*.err'yi bul

Yalnızca / tmp dizininde bulunan * .err dosyaları görüntülenecektir

Notlar

  1. ^ Açık Grup Temel Spesifikasyonları Sayı 7 IEEE Std 1003.1-2008'de bulun . 2009-06-20 alındı .
  2. ^ GNU Findutils kılavuzundaki find - Finding Files'ı çağırma . 2008-05-19 alındı .
  3. ^ a b Linux find komutu: ionos.it üzerinde dosyaları arayın ve bulun . 14 Haziran 2022'de alındı .