Bulmada mantıksal OR nasıl kullanılır?


12

Bash kabuğunda lsmantıksal bir OR işlevselliği (elbette yapabilirim ls name1 name2ama gerçek örneklerim daha karmaşık) aracılığıyla kullanabilir:

ls @(name1|name2)

Bunu kullanarak yapmanın bir yolu var mı find?

Benim saf uygulama:

find . -maxdepth 1 -name @("name1"|"name2") 

çalışmıyor (sadece hiçbir şey üretmiyor)


4
Kılavuzun OPERATORSbölümünü okudunuz findmu?
steeldriver

Yanıtlar:


19

-oMantıksal olarak kullanabilirsiniz OR. Bununla birlikte, tüm findtahminlerin mantıksal değerlere sahip olduğuna dikkat edin , bu nedenle genellikle ORöğeleri parenlerle birlikte gruplandırmanız gerekir . Ve parens de kabuk için bir anlamı olduğundan, onlardan kaçmanız gerekir:

find /some/dir -maxdepth 1 \( -name '*.c' -o -name '*.h' \) -print

5

Sorunuzu cevaplamak için -oseçeneği kullanabilirsiniz :

   expr1 -o expr2
          Or; expr2 is not evaluated if expr1 is true.

   expr1 -or expr2
          Same as expr1 -o expr2, but not POSIX compliant.

bunun gibi:

$ find . -maxdepth 1 -name "name1" -o -name "name2"
./name1
./name2
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.