Neden bul komutundaki nokta?


14

Tipik olarak, findşöyle görünen komutlar görülür :

$ find . -name foo.txt

arama geçerli dizinden başlayacaksa. Makinelerimde (Ubuntu, Cygwin) nokta olmadan aynı sonuçları aldığımı fark ediyorum.

Neden tipik olarak dahil edilir? Sadece açık olmak bir kural mıdır, yoksa belirli sistemlerde gerekli midir / zorunlu mudur?

Yanıtlar:


27

Bazı * sürümleri find, aramanın başlatılacağı bir dizin olan bir yol argümanı sağlamanızı gerektirir. Dot .sadece geçerli dizini temsil eder genellikle aramak istediğiniz yerdir.

Bunu, aramanın temeli olmasını istediğiniz herhangi bir yolla değiştirebilirsiniz. Bulun bazı sürümlerinde, herhangi bir yol argümanı yoksa geçerli dizin ima edildiğinden bu bırakılabilir.

man findArgümanlarla ilgili ayrıntılar için kabuğunuzda çalışabilirsiniz . Örneğin, benim için kullanım özeti , yol bağımsız değişkeninin isteğe bağlı olduğunu belirtir (en cesur kare içinde []):

   find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

Eğer findgeçerli klasörden başlayarak tüm dosya ve dizinlerde hiçbir argüman olmadan çalıştırırsanız iade edilir. Örneğiniz, aramanın başlaması gerektiğini açıkça belirtir .ve ifadeyi -name foo.txtarama filtrelerinden biri olarak içerir .

* Özellikle tüm BSD varyantları ve kesinlikle POSIX standardına bağlı herhangi bir şey . GNU find isteğe bağlı olmasını sağlar.


1
Hangi find sürümlerinin bunu gerektirdiğini biliyor musunuz? Ya da nerede daha fazla araştırma yapabilirim? (bulmak zor google)
Eric Wilson

Varsayılan arama yolu hakkında ilginç bir şey.
rozcietrzewiacz

2
Ben en çok inanıyorum BSD bulmak ise varyantlar bir yol argüman gerektiren bulmak GNU o isteğe bağlıdır. Varyasyonlar olabilir.
Caleb

2
En azından 2008 POSIX standart spesifikasyonlarında, pathbulunması gereken bir argüman olduğunu unutmayın .
Caleb

1
Nit pick: “Bu [nokta] 'yı istediğiniz herhangi bir yolla değiştirebilirsiniz” → “istediğiniz herhangi bir yol ” diyebilirsiniz find dir1 dir2 dir3 -name foo.txt.
G-Man

5

Örneğin find'ın AIX sürümü yolu gerektirir ve sağlanmazsa çalışmaz.

# oslevel -s
5300-08-03-0831
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]

# oslevel -s
6100-03-01-0921
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]

Bazı AIX makinelerinde, yol olmadan baş edebilen bir GNU bulgusu yüklü olsa da,

# oslevel -s
6100-03-01-0921
# /opt/freeware/bin/find -version
GNU find version 4.1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.