在单个衬里中插入sed以从文件名中删除字符串

时间:2016-05-18 13:54:32

标签: shell sed

这应该是一个简单的问题。使用linux终端我想使用转换在文件夹中裁剪图像并使用sed更改其名称。例如, 下面的一个班轮按照我的预期将图像裁剪到文件夹中:

for file in Screenshot*.png; do convert -crop 1925x1060+10+1 $file newname_$file; done

但是,我想剥离"截图 - "文件名中的字符串。有了sed,我可以使用sed -n' s / Screenshot - // 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

1 个答案:

答案 0 :(得分:3)

我会使用bash的parameter expansion而不是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