Bash:在文件名上执行字符串替换时出现“没有这样的文件或目录”错误

时间:2016-08-21 12:43:22

标签: bash unix imagemagick

我有一堆图像文件,在文件名末尾包含字符串“1170x603.jpg”。我想运行一个imagemagick脚本,调整它们的大小并将它们重命名为“FOO-thumb.jpg”

这是我的代码:

find . -name "*1170x603.jpg"|while read fname; do
  $thumb="${fname/1170x603/thumb}"
  convert $fname -resize 45.6% $thumb
done

这给了我错误

  

第2行:=。/ 05 / FOO-thumb.jpg:没有这样的文件或目录

对于我正在尝试处理的每个图像文件。

有人可以建议如何解决这个问题吗?

编辑:此错误与imagemagick无关。即使我省略了“convert $ fname -resize 45.6%$ thumb”这一行,我仍在尝试处理的每个文件都会出现错误。

1 个答案:

答案 0 :(得分:0)

知道它已经老了 - 但有一个类似的脑屁导致我在这里。

shell变量在声明期间不使用$

从$ thumb声明中删除$符号,它应该有效。

find . -name "*1170x603.jpg"|while read fname; do
  thumb="${fname/1170x603/thumb}"
  convert $fname -resize 45.6% $thumb
done