在 -exec 中找不到参数

在 -exec 中找不到参数

我有这样的问题,我试图输出一个没有文件中目录名称的电影列表,但是我有一个错误,在 中找不到参数-exeс,下面是代码

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

答案1

您的命令中有两个拼写错误。

  1. \{}应该{}

  2. (反斜杠\␣+空格)应该是\;or ';'

的选项-exec/谓词find需要知道它执行的命令在哪里结束。最后的 告诉了这一点;(需要引用它以保护它免受 shell 的影响)。

您不需要转义或引用{}

也可能存在一些优先级问题。你基本上说

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

相关内容