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)

JeffDror
sumber
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
lcd047
sumber
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
Arkadiusz Drabczyk
sumber