我正在尝试创建一个并将其添加到cron中。 这是我试图通过脚本运行的命令。
#!/bin/bash
find . -mmin -60 -name "*.jpg" $(printf "! -name %s " $(cat processed.txt) ! -name cache) -exec convert -resize 1000x800 -quality 85% {} {};
find -mmin -60 -type f -name "*.jpg" -exec basename {} \; &> processed.txt
f我直接在shell上运行这些命令,但没有收到任何错误。 但是如果说我已经将其存储在名为compress的文件中,并以./compress运行脚本 我收到错误-
find: missing argument to `-exec'
我犯了什么错误以及如何解决。
答案 0 :(得分:1)
为第一个find
命令构建一个参数数组,而不是依赖于命令替换。
while IFS= read -r line; do
processed+=(! -name "$line")
done < processed.txt
但是,您的直接问题是,您忘记了转义分号,以便将其视为find
的参数,而不是命令终止符。
find . -mmin -60 -name "*.jpg" "${processed[@]}" \
! -name cache -exec convert -resize 1000x800 -quality 85% {} {} \;
# ^^
find -mmin -60 -type f -name "*.jpg" -exec basename {} \; &> processed.txt