-exec [중복]에서 매개변수를 찾을 수 없습니다.

-exec [중복]에서 매개변수를 찾을 수 없습니다.

이 문제가 있습니다. 파일에 디렉터리 이름 없이 영화 목록을 출력하려고 하는데 오류가 있습니다. 매개변수를 찾을 수 없습니다. -exeс아래 코드는 다음과 같습니다.

$ find . -name "*.avi" -o -name "*.mkv" -exec basename \{} \ > ~/Bash/test/rm/films.txt

답변1

명령에 두 가지 오타가 있습니다.

  1. \{}~해야 한다{}

  2. (백슬래시 +공백) 은 또는 \␣이어야 합니다 .\;';'

-exec/predicate 옵션은 find실행하는 명령이 끝나는 위치를 알아야 합니다. 마지막 항목이 이에 대해 설명합니다 ;(셸에서 보호하려면 인용해야 합니다).

이스케이프 처리하거나 인용할 필요가 없습니다 {}.

우선순위 문제도 있을 수 있습니다. 당신은 기본적으로 말한다

condition OR condition AND run-this-command

이것은 불분명합니다. 라고 말하는 것이 더 낫다

(condition OR condition) AND run-this-command

수행 방법은 다음과 같습니다.

find . -type f '(' -name '*.avi' -o -name '*.mkv' ')' \
    -exec basename {} ';' > ~/Bash/test/rm/films.txt

-type f일반 파일만 고려되도록 이런 것도 추가했습니다 .

답변2

이 시도:

$ find . \( -name "*.avi" -o -name "*.mkv" \) -exec basename {} \; > ~/Bash/test/rm/films.txt

관련 정보