찾기 실행 중 문제 발생: '-exec' 인수 누락

찾기 실행 중 문제 발생: '-exec' 인수 누락

현재 디렉토리에서 "chrome"이라는 텍스트가 포함된 파일을 찾고 싶습니다.

$ find . -exec grep chrome
find: missing argument to `-exec'

내가 뭘 잘못했나요?

답변1

a ;( \;셸이 해석하지 못하도록 여기에서 이스케이프 처리됨) 또는 a +및 a 를 놓쳤습니다 {}.

find . -exec grep chrome {} \;

또는

find . -exec grep chrome {} +

find실행되고 찾은 파일 이름으로 grep대체됩니다 . 와 차이점은 각 파일에 대해 단일 명령이 실행되는 반면, 가능한 많은 파일이 한 번에 인수로 제공된다는 점입니다.{};+;grep+grep

답변2

find이를 위해 grep을 사용할 필요는 전혀 없습니다. grep은 현재 디렉터리에 있는 모든 항목의 전체 목록에서 파일을 열 수 있습니다.

grep chrome *

...또는 폴더와 그 아래의 모든 항목에 재귀적으로 추가할 수도 있습니다.

grep chrome . -R

답변3

find . | xargs grep 'chrome'

다음과 같이 할 수도 있습니다.

find . | xargs grep 'chrome' -ls

첫 번째는 파일의 행을 표시하고 두 번째는 파일을 나열합니다.

Caleb의 옵션은 더 깔끔하며 더 적은 수의 키 입력이 필요합니다.

답변4

다음은 내가 일반적으로 find/exec를 사용하는 방법에 대한 예입니다.

find  . -name "*.py" -print -exec fgrep hello {} \;

이것은 모든 .py 파일을 재귀적으로 검색하여 각 파일의 파일 이름을 인쇄하고 fgrep을 사용하여 해당 (각) 파일에서 "hello"를 찾습니다. 출력은 다음과 같습니다(오늘 하나만 실행했습니다).

./r1.py
./cgi-bin/tst1.py
print "hello"
./app/__init__.py
./app/views.py
./app/flask1.py
./run.py
./tst2.py
print "hello again"

관련 정보