답변:
검색 . -type f -name "* .htm *"-o -name "* .js *"-o -name "* .txt"
짧다 :
검색 . \ (\ ( -type f -a -name "* .htm *" \) -o \
\ ( -name "* .js *" \) -o \
\ ( -name "* .txt" \) \
\) -a-인쇄
즉, 조치 술어가 지정 되지 않았기 때문에 ( condition 만 해당 ), -print조건과 일치하는 파일에 대한 조치가 내재적으로 추가됩니다.
(그리고 그것은 비정규 .js파일을 인쇄 합니다 (파일 -type f에만 적용됩니다 .htm)).
동안:
검색 . -type f -name "* .htm *"-o -name "* .js *"-o -name "* .txt"\
-exec sh -c 'echo "$ 0"'{} \;
짧다 :
검색 . \ ( -type f -a -name "* .htm *" \) -o \
\ ( -name "* .js *" \) -o \
\ ( -name "* .txt" -a -exec sh -c 'echo "$ 0"'{} \; \)
의 경우 find(여러 언어 등) 및 ( -a; 생략하는 경우 암시 적)을 통해 우선 순위가 OR ( -o), 및 명시 적 액션 술어를 (여기에 추가하는 -exec)이 취소 -print위의 볼 암시 적 조치를. 여기, 당신은 원한다 :
find . -type f \( -name "*.htm*" -o -name "*.js*" -o -name "*.txt" \) \
-exec sh -c 'echo "$0"' {} \;
또는:
find . -type f \( -name "*.htm*" -o -name "*.js*" -o -name "*.txt" \) -exec sh -c '
for i do
echo "$i"
done' sh {} +
sh파일 당 하나를 실행하지 않기 위해 .
묵시적인 대괄호입니다. 명시적인 대괄호를 추가하십시오.\( \)
find . -type f \( -name "*.htm*" -o -name "*.js*" -o -name "*.txt" \) -exec sh -c 'echo "$0"' {} \;
또는 xargs 사용 (xargs를 좋아하지만 쉽게 찾을 수는 있지만 휴대용은 아닙니다).
find . -type f \( -name "*.htm*" -o -name "*.js*" -o -name "*.txt" \) -print0 | xargs -0 -n1 echo
*.js*또는*.txt.