我需要編寫一個shell腳本來將圖像格式從.png轉換爲.tif。腳本如下:使用shell腳本處理文件名:更改文件擴展名
#!/bin/sh
for f in `ls *.png`
do
convert $f $f.tif
done
但是這樣做會將.tif格式附加到現有的文件名。即,如果圖像是abc.png,則$ f將具有abc.png,並且在將文件名轉換爲abc.png.tif之後。這不是我想要的。我需要它是abc.tif。我如何操作$ f來刪除.png?
我需要編寫一個shell腳本來將圖像格式從.png轉換爲.tif。腳本如下:使用shell腳本處理文件名:更改文件擴展名
#!/bin/sh
for f in `ls *.png`
do
convert $f $f.tif
done
但是這樣做會將.tif格式附加到現有的文件名。即,如果圖像是abc.png,則$ f將具有abc.png,並且在將文件名轉換爲abc.png.tif之後。這不是我想要的。我需要它是abc.tif。我如何操作$ f來刪除.png?
這應該爲你工作:
#!/bin/bash
for file in *.png
do
filename=$(basename "$file")
filename=${filename%.*}
convert $file $filename.tif
done
的線路由行演練的是如何工作的:
for file in *.png
- 你不需要命令替換ls *.png
得到的名單帶有png
擴展名的文件。通配符*
將在shell中自動擴展以匹配cwd中的文件列表;在這種情況下,文件列表以.png
結尾。filename=$(basename "$file")
- 這隻適用於防禦性編程;它得到文件的實際名稱filename=${filename%.*}
- 這將刪除filename
convert $file $filename.tif
擴展 - 運行實際的轉換命令
[不要」解析'ls'(HTTP://mywiki.wooledge .org/ParsingLs) –