"-exec rm -f {} \"사용시 "find :`-exec '에 대한 인수가 없습니다"


12

이 명령을 실행합니다 :

~/shell_temp$ find . -type f -name "IMAG1806.jpg" -exec rm -f {}\

아래 출력이 있습니다.

> IMAG1806.jpg

Error:
find: missing argument to `-exec'

현재 디렉토리에서 파일을 찾고 제거하는 정확한 명령은 무엇 -exec입니까?


1
당신은 단지 할 수 rm "IMAG1806.jpg"없습니까? 그것은 같은 디렉토리에 있기 때문에 그것이 무엇인지 알 수 있습니다.
TheWanderer

@ Zacharee1-OP가 "드라 이런"을하고 있다고 가정합니다. 찾은 "더 많은 파일"을 찾은 다음 -exec없이 실행 중이거나 적어도 파일 목록을 검토하고 파일 목록을 검토하는 경우를 대비하여 rm과 함께 -i를 사용하는 것이
Panther

1
@ Zacharee1 : find 명령은이 이름으로 호출 된 모든 파일을 현재 디렉토리 및 모든 서브 디렉토리 (임의의 깊이에서)에서 삭제합니다.
Dennis

3
또는 직접 사용하는 대신 -exec rm사용하십시오 -delete.
Braiam

답변:


30

당신은 A를 놓친 ;말 (사이 너무 공간 {};). 올바른 명령은 다음과 같습니다.

find . -type f -name "IMAG1806.jpg" -exec rm -f {} \;

;-exec술어의 끝을 나타냅니다 find.

또한 우리가 사용하고 있습니다 \;\;의 해석 탈출 ;달리 취급 쉘, 쉘이를 ;전체의 끝으로 find명령과 find같은 오류가 발생합니다. ';'대신에 사용할 수도 있습니다 \;.

\마지막 에 사용 하고 있었는데 , 이것은 쉘이 PS2( 를 통해 >표시됨)을 통해 계속 입력을 받고 IMAG1806.jpg다시 입력 했음을 나타내 므로 전체 명령은 다음과 같습니다.

find . -type f -name "IMAG1806.jpg" -exec rm -f {}IMAG1806.jpg

보시다시피, 이것은 술어 IMAG1806.jpg가 닫히지 -exec않고 {}및 사이에 공백 이 없으면 유효한 명령이 아닙니다 \;.


1
"당신 ;은 마지막에 a 를 놓쳤다 "고마워요. 제가 실수로 :대신 타이핑을했다는 사실을 깨닫기 전에 10 분 동안 문제를 해결 ;했습니다.이 현대적인 HD 스크린에서는 놓치기 쉽습니다.
user5359531

7

당신은 단순히 할 수 있습니다

find . -type f -name 'IMAGE1806.jpg' -delete

매뉴얼 페이지에서 :

Delete files; true if removal succeeded.  If the removal failed,
an  error message is issued.  If -delete fails, find's exit sta‐
tus will be nonzero (when it eventually exits).  Use of  -delete
automatically turns on the -depth option.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.