在一行中插入sed,从文件名中去掉一个字符串



这应该是一个简单的问题。使用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

最新更新