Bagaimana cara menggunakan logika ATAU dalam menemukan?


12

Dalam bash shell lsdapat menggunakan fungsionalitas ATAU logis melalui (tentu saja saya juga bisa melakukan ls name1 name2tetapi contoh saya yang sebenarnya lebih rumit):

ls @(name1|name2)

Apakah ada cara untuk melakukan ini menggunakan find?

Implementasi naif saya:

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

tidak bekerja (tidak menghasilkan apa-apa)


4
Apakah Anda membaca OPERATORSbagian dari halaman findmanual?
steeldriver

Jawaban:


19

Anda dapat menggunakan -ologika OR. Namun berhati-hatilah karena semua findpredikat memiliki nilai logis, jadi biasanya Anda perlu mengelompokkan beberapa ORhal bersama-sama dengan parens. Dan karena orangtua juga memiliki makna pada shell, Anda juga perlu menghindarinya:

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

5

Untuk menjawab pertanyaan Anda, Anda dapat menggunakan -oopsi:

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

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

seperti ini:

$ find . -maxdepth 1 -name "name1" -o -name "name2"
./name1
./name2
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.