이 문제가 있습니다. 파일에 디렉터리 이름 없이 영화 목록을 출력하려고 하는데 오류가 있습니다. 매개변수를 찾을 수 없습니다. -exeс
아래 코드는 다음과 같습니다.
$ find . -name "*.avi" -o -name "*.mkv" -exec basename \{} \ > ~/Bash/test/rm/films.txt
답변1
명령에 두 가지 오타가 있습니다.
\{}
~해야 한다{}
(백슬래시 +공백) 은 또는
\␣
이어야 합니다 .\;
';'
-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