*.c
확장자 가 있는 파일을 찾으려고 합니다 *.h
. 나는 다음 명령을 사용합니다
find "$path" -type f -iname "*.c" -o -iname "*.h" -exec ls {} \;
이는 ls *.h
일치만 수행합니다. 나는 시도했지만 -o -iname *.c -o -iname *.h
같은 일이 일어났습니다. c 및 h 파일에서 실행하고 싶나요?
답변1
분리된 절을 그룹화해야 합니다.
find "$path" -type f \( -iname "*.c" -o -iname "*.h" \) -exec ls {} \;
이것이 없으면 명령은 두 개의 분리된 절 집합, 즉 한편으로는 다른 한편 find
으로는 해석됩니다 . 그렇기 때문에 일치하는 항목만 볼 수 있습니다.-type f -iname "*.c"
-iname "*.h" -exec ls {} \;
*.h
ls
그건 그렇고, 이렇게 달리는 것은 의미가 없습니다. 당신은 사용할 수도 있습니다
find "$path" -type f \( -iname "*.c" -o -iname "*.h" \) -print
(그러나 어쩌면 ls
자리 표시자일 수도 있습니다).
두 개의 glob을 결합하여 명령을 단순화할 수도 있습니다.
find "$path" -type f -iname "*.[ch]"
(기본 동작에 따라 다름 -print
)