以下命令应该做的是搜索所有发票pdf文件,并检查同一目录内是否有缩略图文件。如果没有,它应该打印目录。稍后,我将添加将创建缩略图的命令。
find . -maxdepth 2 -type f -name "invoice_*.pdf" -exec sh -c '[ -f "$(dirname {})/thumbnail.jpeg" ] || echo {}' ';'
该命令正在运行,但是除了文件路径之外,我还看到以下内容
sh: 1: Syntax error: "(" unexpected (expecting ")")
我猜该文件路径被解释为命令。
您(
在其中一个文件名中有一个,并且没有引用。
尝试:
find . -mindepth 3 -maxdepth 3 -type f -exec sh -c '[ -f "$(dirname '"'{}'"')/thumbnail.jpeg" ] || echo "{}"' \;
如果文件名中'"'{}'"'
存在,则双引号将双引号传递给dirname命令(
。该'[ -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 '{}' \;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句