我尝试在下面的代码段中使用变量$ y,但仍然会遇到显示为$ y.pdf的文件名
ls -v *.jpg | tr '\n' ' ' | sed 's/$/\ $y.pdf/' | xargs convert
我也试过以下内容:
ls -v *.jpg | tr '\n' ' ' | sed 's/$/\'"$y.pdf"'/' | xargs convert
ls -v *.jpg | tr '\n' ' ' | sed 's/$/\ {$y}.pdf/' | xargs convert
最重要的一个通常会失败,因为sed期待别的东西。底部只是我的文件名{$ y} .pdf。
对我有什么想法?
谢谢!
答案 0 :(得分:1)
别介意引用问题;这完全是错误的做法。只需使用for
循环即可避免各种潜在问题。
for f in *.jpg; do
convert "$f" "${f%.jpg}.pdf"
done
${f%.jpg}
扩展为当前文件的名称减去.jpg
扩展名。
将文件合并为一个PDF甚至更简单(我认为):
convert *.jpg "$y.pdf"
假设ls -v
以正确的顺序输出文件名,并且没有涉及解析ls
的任何常见问题,请使用
ls -v *.jpg > input.txt
convert @input.txt "$y.pdf"
(可能有一种方法可以避免使用临时文件,可能就像ls -v *.jpg | convert @- "$y.pdf"
一样简单,但是我懒得弄清convert
可以被调用的所有方式。)< / p>