以下命令应该执行的操作是搜索所有发票 pdf 文件并检查同一目录中是否存在缩略图文件。如果没有,它应该打印目录。稍后我将添加一个创建缩略图的命令。
find . -maxdepth 2 -type f -name "invoice_*.pdf" -exec sh -c '[ -f "$(dirname {})/thumbnail.jpeg" ] || echo {}' ';'
该命令正在运行,但除了文件路径之外,我还看到以下内容
sh: 1: Syntax error: "(" unexpected (expecting ")")
我猜文件路径被解释为命令。
答案1
(
您的文件名之一中有 a并且没有引用。
尝试:
find . -mindepth 3 -maxdepth 3 -type f -exec sh -c '[ -f "$(dirname '"'{}'"')/thumbnail.jpeg" ] || echo "{}"' \;
进行的引用是将双引号传递给 dirname 命令,以防文件名中'"'{}'"'
存在 a 。(
该'[ -f .. ]'
命令也需要双引号,echo 命令也需要引号!
调用脚本并将路径作为参数传递给它可能更容易find
,因此您不必考虑多层引用和替换。例如(未测试):
$ cat script
#!/bin/bash --
dir=$(dirname "${1}")
[ -f "${dir}/thumbnail.jpeg" ] || echo "${1}"
$ find . -mindepth 3 -maxdepth 3 -type f -exec ./script '{}' \;