替换输出文件的扩展
问题描述:
说我有一个命令,convertImage,这需要一些输入JPEG,并在同一目录吐出了一个新的PNG:替换输出文件的扩展
convertImage --format png photo.jpg -o photo.png
我想打一个别名“ convertToPng”这需要只有一个ARG,该文件:
convertToPng photo.jpg
我目前的解决办法是这样的:
alias convertToPng "convertImage --format png \!:1 -o \!:1.png"
如何这将把输出文件命名为“photo.jpg.png”,我希望它被命名为“photo.png”。有什么办法先解析文件名,然后将其传递给convertImage可执行文件?
答
如果您输入始终JPG然后
convertToPng photo
alias convertToPng "convertImage --format png \!:1.jpg -o \!:1.png"
或给予延长作为第二个参数
convertToPng photo jpg
alias convertToPng "convertImage --format png \!:1.\!:2 -o \!:1.png"
或最后一个选项
convertToPng photo.jpg
alias convertToPng "convertImage --format png \!:1 -o `echo $1 | cut -f1 -d'.'`.png"
或如下写你的.bashrc
功能
function convert()
{
convertImage --format png $1 -o `echo $1 | cut -f1 -d'.'`.png;
}
和执行上述function
作为
convert photo.jpg
我更喜欢function
方式,因为它给了你很大的灵活性在aliases
,你能做的不仅仅是一个语句等等。
答
echo photo.jpg | awk -F. '{print $1".png"}'
这可以在一个命令行调用可以使用像这样:
$ convertImage --format png photo.jpg -o `echo photo.jpg | awk -F. '{print $1".png"}'`