-L ile kullanım bul


34

Sahibim

link -> file

Ben yaparım

find -L . -name 'link'

Ve Al

./link

Neden?

adam bulmak diyor ki:

-L: Sembolik linkleri takip et. Bul dosyalar ile ilgili bilgileri incelerken veya yazdırırken, kullanılan bilgiler, bağlantı noktasının kendisinden değil, bağlantının işaret ettiği dosyanın özelliklerinden alınır (kırılgan sembolik bir bağlantı olmadıkça veya bulunamadığında dosyayı inceleyemez. hangi bağlantıyı gösterir).

Yanıtlar:


12

İle -L, dosyanın özelliklerini inceler - içeriğin veya meta verilerin değil, bağlantının özelliklerini. Örneğin, kullanırsanız -atime, atimedosyayı değil, dosyayı kontrol eder :

$ find testdir/ -name link -newer testdir/ref
testdir/link
$ find -L testdir/ -name link -newer testdir/ref
$

testdir/linksonra oluşturuldu testdir/ref, ancak işaret ettiği dosya değildi.


1
Benim örneğimi alarak açıklayabilir misiniz? Anladığım şey şudur: Örneğimde bul, aramaya başlar. . / Link ile karşılaşır, çünkü -L gerçekte onu geçersiz kılar ve ./file özelliklerini alır. ./File ismini 'link' kalıbı ile karşılaştırır ve eşleşmediğinden herhangi bir o / p bildirmemelidir. Akıl yürütmemde yanlış olan ne?
Ankur Agarwal

Aldığınız bul kılavuzundan "kullanılan bilgiler, bağlantının işaret ettiği dosyanın özelliklerinden alınacaktır." Bir dosyanın adı özelliklerinden biri değil, bu yüzden hala bağlantının adını kullanıyor. Bu aynı zamanda gerçek dosyanın adından daha kullanışlı.
Kevin

"Dosyanın adı özelliklerinden biri değil" olduğunu bilmiyordum. Herhangi bir özellik olarak kabul edilmeyen dosyaların başka bir özelliği var mı? Dürüst olmak gerekirse hala şüpheliyim ve diğerlerinin söyleyeceklerini beklerdim.
Ankur Agarwal

@ Abc ile aynı, bir dosya adının bir dosya özelliği olmadığını bilmiyordu. Bu bilgileri herhangi bir belgede ve / veya man sayfalarında nerede bulabilirim? Lütfen bir dosya özellikleri hakkında nereden daha fazla bilgi edinebileceğime bakın.
şakacı

34

Genel kural, eğer bir komut linkler üzerinde çalışıyorsa (yani inode'lara işaret eden dizin girişleri), komutun linkin işaret ettiği nesne yerine sembolik bağlantıları kendileri gibi ele almasıdır. Aksi halde komut, sembolik bağlantının neye işaret ettiğini gösterir. Böylece cp, varsayılan olarak sembolik izleri takip eder ve link ile gösterilen dosyanın içeriğini kopyalar. Ancak cpbelirterek dizin girişleriyle uğraşmak istediğinizde -R, sembolik bağlantıları izlemeyi durdurur. mvher zaman dizin girişleriyle çalışır ve böylece hiçbir zaman sembolik izleri izlemez.

findKomutunun Normal aktivite dizini kayıtlara işletmek, bu nedenle sembolik bağlar varsayılan olarak takip edilmez. Ekleme , dizin araması yaparken adı göz ardı edilemeyecek olan dışındaki tüm özelliklerin izlerini sürmeye -Lneden olur . Amaçlarından biri , dizin girişlerinde çalışan ve benzeri komutlar için girdi sağlamaktır . Kök dizin ağacının dışına işaret eden isimler üretebilirse, rahatsız edici ve şaşırtıcı sonuçlar ortaya çıkacaktır .findfind -namemvrmfind -L dir -namedir


VAOV! Neden bu ince konsept, man sayfalarında iyi görünmüyor? Bu benim için büyük bir sürpriz.
Ankur Agarwal

2
@Kyle Jones There would be unpleasant and surprising results if bulmak -L dir -name` sivri dış dir.` kök dizin ağacı => olması gerektiğini isimler üretmek olabilir: tatsız ... eğer olacağını find dir -name pattern...? -L ekleyerek dış dir
işarete

Öyleyse cp -R, bir sembolik bağlantının altındaki şeyleri nasıl kopyalayabilirim?
javadba
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.