簡體   English   中英

在Linux Shell命令中替換輸出文件擴展名

[英]Replace output file extension in linux shell command

假設我有一個命令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"}'`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM