* nix find -type bayrak: birden fazla türü kabul edebilir mi?


7

kullanmak istiyorum find tüm simlinkleri ve düzenli dosyaları almak için. -Tip'i bunlar için ayrı ayrı kullanabilirim, -o'yu bunları bir araya getirmek için kullanabilirim, ama görünüşe göre yapamam -type fl.

Bu komutu yoğunlaştırmanın bir yolu var mı? Oldukça ağır.

find -type l -name node-dev -exec ls -lah {} + -o -type f -name node-dev -exec ls -lah {} +

Ben olmadan çalıştırabilmek istiyorum. -o, sevmek:

find -type lf -name node-dev -exec ls -lah {} +

Man sayfası bunun mümkün olmadığını gösteriyor gibi görünüyor (fazladan hiçbir şey söylemiyor) -type bayrak tartışmaları), ama yine de soracağımı ve bir şeyler öğrenmeye çalışacağımı düşündüm.

Dosyaların herhangi bir makul uzantı adlandırma yapısının garantisi olmadığını ve bu nedenle regex tabanlı çözümlerin işe yaramadığını unutmayın. Ayrıca, kullanabilirsiniz '!' Bu gibi dizinleri hariç tutmak için operatör cevap önerileri , ancak ideal olarak, aramadaki dizinlerden daha fazlasını dışlamak istiyorum.

Yanıtlar:


9
# Apply to only link or file type directory entries: 
$ find . \( -type l -o -type f \) -name node-dev -exec ls -lah {} \;

# Apply to anything but a directory - add more with -o in between "\(" & "\)" meta-characters:
$ find . ! \( -type d \) -name node-dev -exec ls -lah {} \;

Find komutunda, -exec çağrısının yerini alabilecek bir -ls anahtarı bulunduğunu, bulmanın başlaması yavaş olabileceğini unutmayın ancak bulunan her dosya için yeni bir işlem oluşturmak zorunda kalmanın sistem kaynaklarını daha iyi kullandığını unutmayın başka yerde.


Ah, ikinci bölümün düzenlenmesi çok daha mantıklı geliyor - yanlış yaptığımı sanıyordum. Parantez grubu olarak adlandırılan ve bunun hakkında daha fazla bilgi edinebilmek için ne denir?
Patrick M

1
Paren, kabuk için anlamlıdır, dolayısıyla kabuk onları soymayacak şekilde onlardan kaçınmalıdır. man find - birinci ve en yüksek önceliğe sahip operatör parantez içindeki ifadedir; OPERATÖRLERDE ARAMA. Bulguların arkasındaki teori çoğu C ve UNIX değerlendirmesi gibidir; Soldan sağa doğru değerlendirilen bir Boole ifadesi, 'kısa devre' ile, yani bir doğruluk ifadesi belirlendiğinde ("eğer (TRUE veya başka bir şey") gibi).
Billy McCloskey
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.