답변:
검색 . -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
.