답변:
xargs
다른 명령이 생성하지 않는 형식으로 입력해야하므로 효과적으로 사용하기가 어렵습니다. 여기서 잘못 된 것은 입력 할 때 이름이 따옴표로 묶어야하는 파일이 있다는 xargs
것입니다 (아마도 포함 '
).
grep 이 재귀 검색을 위해 -r
또는 -R
옵션을 지원하는 경우이를 사용하십시오.
grep -r word .
그렇지 않으면 -exec
기본을 사용하십시오 find
. xargs
파일 이름에 제약이없는 것을 제외 하고는와 동일한 효과를 얻는 일반적인 방법입니다 . 합리적으로 최신 버전을 find
사용하면 보조 명령을 한 번의 호출로 여러 파일을 그룹화 할 수 있습니다. 전달 /dev/null
에 grep
보장하지만 것은 하나의 파일에 호출 할 일 경우에도 각 경기의 앞에 파일 이름이 표시됩니다.
find . -type f -exec grep word /dev/null {} +
이전 버전 find
(이전 시스템 또는 OpenBSD 또는 BusyBox와 같은 축소 유틸리티)에서는 한 번에 하나의 파일에서만 보조 명령을 호출 할 수 있습니다.
find . -type f -exec grep word /dev/null {} \;
일부의 버전 find
과는 xargs
그들이 더 인용이 필요하지 않도록 별도의 파일 이름에 널 문자를 사용하여 제대로 통신 할 수 있도록 확장이있다. 요즘에는 OpenBSD만이이 기능을 가지고 -exec … {} +
있습니다.
find . -type f -print0 | xargs -0 grep word /dev/null
파일에서 문자열을 찾으려고 생각합니다.
시험 find . -name "*" | xargs grep -l "string"
/dev/null
. 일치하는 파일 수에 따라 출력 형식이 다를 수있는 것은 성가신 일입니다. 감사합니다.