这应该是一个简单的问题。使用linux终端,我想使用convert在文件夹中裁剪图像,并使用sed更改其名称。例如下面的一行裁剪文件夹中的图像,正如我所期望的:
for file in Screenshot*.png; do convert -crop 1925x1060+10+1 $file newname_$file; done
但是,我想从文件名中去掉"Screenshot-"字符串。有了sed,我可以使用sed-n的/屏幕截图//p':
echo "Screenshot-1.png" | sed -n 's/Screenshot-//p'
但是我怎样才能在上面的for循环中插入sed呢?
例如,如果我有一个文件夹,里面有这些图像:
Screenshot.png Screenshot-1.png Screenshot-2.png do_not_crop.png
我希望看到这些文件:
Screenshot.png 1.png 2.png do_not_crop.png
谁可以告诉我如何将Screenshot.png转换为0.png 的其他要点
编辑:基于hek2mgl的答案,这个脚本有效:
for file in Screen*png;
do convert -crop 1925x1060+10+1 $file
$(if [[ "$file" == "Screenshot.png" ]];
then echo "0.png";
else echo "${file#Screenshot-}";
fi);
done
并输出0.png
我会使用bash的参数展开,而不是sed
。
示例:
for file in Screenshot.png Screenshot-1.png Screenshot-2.png do_not_crop.png ; do
echo "${file#Screenshot-}"
done
输出:
Screenshot.png
1.png
2.png
do_not_crop.png