1

我正在尝试使用以下命令在当前目录中查找所有 PDF(不是递归的) - 但是我认为它不喜欢 --out 上的“{}”。

find . -iname "*.pdf" -maxdepth 1 -exec sips -s format jpeg --resampleHeightWidth 129 100 '{}' --out '{}'.jpg \;

当我指定名称 --out test.jpg 时,与 -print 和 sips 一起使用时的查找工作有效。有什么办法可以使这项工作?还是我应该尝试 xargs?为了简单起见,我真的不想使用循环......有什么想法吗?

更新:我尝试使用 xargs - 但再次收到错误 out_dir_not_found。

find . -iname "*.pdf" -maxdepth 1 -print0 | xargs -0 -I % sips -s format jpeg --resampleHeightWidth 129 100 % --out "%.jpg"


mymbpro:pdfs dh$ find . -iname "*.pdf" -maxdepth 1 -print0 | xargs -0 -I % sips -s format jpeg --resampleHeightWidth 129 100 % --out "%.jpg"
Error 10: out_dir_not_found /Users/darenhunter/Desktop/pdfs/ATTENTION.pdf.jpg
Try 'sips --help' for help using this tool
Error 10: out_dir_not_found /Users/darenhunter/Desktop/pdfs/DisNCLB119.pdf.jpg
Try 'sips --help' for help using this tool
Error 10: out_dir_not_found /Users/darenhunter/Desktop/pdfs/services2012.pdf.jpg
Try 'sips --help' for help using this tool
Error 10: out_dir_not_found /Users/darenhunter/Desktop/pdfs/Fall2011.pdf.jpg
Try 'sips --help' for help using this tool
4

1 回答 1

2

如果您将执行多个结果,则将结果通过管道传递给xargs命令会更有效。xargs是一个更现代的实现,并以更智能的方式处理长列表。该 print0选项可以与此一起使用。

以下命令将确保将带有空格的文件名传递给执行的 COMMAND 而不会被 shell 拆分。乍一看,它看起来很复杂,但被广泛使用。

find . -print0 | xargs -0 COMMAND

参考

于 2013-01-29T18:40:22.533 回答