我有这样的问题,我试图输出一个没有文件中目录名称的电影列表,但是我有一个错误,在 中找不到参数-exeс
,下面是代码
$ find . -name "*.avi" -o -name "*.mkv" -exec basename \{} \ > ~/Bash/test/rm/films.txt
答案1
您的命令中有两个拼写错误。
\{}
应该{}
(反斜杠
\␣
+空格)应该是\;
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