我需要在许多目录中转换大约12000个TIF文件,并尝试编写bash-script:
#!/bin/bash
find -name "*.tif" | while read f
do
convert "$f" "${f%.*}.png"
rm -f "$f"
done
为什么会这样说:x.sh:6:语法错误:文件结束意外(期待“做”)以及我应该做什么?
非常感谢你们所有人,但是我被骗了:应该用它运行的计算机可以在Windows下运行。我不知道如何使用DOS中的字符串和循环,现在我的脚本看起来像:
FOR /R %i IN (*.tif) DO @ (set x=%i:tif%png) & (gm convert %i %xtif) & (erase /q /f %i)
%i - 其中一个.tif文件。
%x - 扩展名为.png的文件名
gm convert - graphics magick utility,与图像magick在linux上的转换类似。
答案 0 :(得分:3)
语法看起来没问题,但是如果它是EOL的问题,请尝试在do
之前添加分号来修复语法错误(或检查新行实际存在/编码为ghostdog74建议):
find -name "*.tif" | while read f ; do # ...
请注意,查找/读取模式不健壮。使用可以直接使用find的exec
功能(感谢Philipp的内联命令):
find -name "*.tif" -exec sh -c 'file=$0 && convert "$file" "${file%.tif}.png"' '{}' ';' -delete