linux - 在 linux shell 命令中替换输出文件扩展名

标签 linux shell csh

假设我有一个命令 convertImage,它接受一些输入 jpeg,并在同一目录中生成一个新的 png:

convertImage --format png photo.jpg -o photo.png

我想创建一个别名“convertToPng”,它只需要一个参数,文件:

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;
}

并执行上面的函数作为

convert photo.jpg

我更喜欢 function 方式,因为它为您提供了比 aliases 更大的灵 active ,而且您可以做的不仅仅是一个语句。

关于linux - 在 linux shell 命令中替换输出文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47232707/

相关文章:

linux - 当接口(interface)down到RUNNING时如何自动安装路由

mysql - MYSQL 接受用户输入? Shell 脚本/批处理文件

shell - 我写的 shell 脚本有什么问题

linux - 继续收到 "Else: endif not found."错误

python - 无法从源代码构建 python3.4 (RHEL 6)

linux - 从管道在命令行上创建 zip 时,如何在 zip 中指定文件名?

linux - UNIX\Linux : How to add a directory text to each line inside a file?

linux - Shell 脚本不会终止,我需要手动终止它

linux - 使用命令行参数创建目录的 Shell 脚本

linux - 如何使用 shell 脚本递归获取所有 jpg 文件