사용 방법 또는 찾아서 실행하는 방법 [중복]

사용 방법 또는 찾아서 실행하는 방법 [중복]

*.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)

관련 정보