2

画像形式を .png から .tif に変換するシェル スクリプトを作成する必要があります。スクリプトは次のとおりです。

#!/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 を削除するにはどうすればよいですか?

4

1 に答える 1

6

これはあなたのために働くはずです:

#!/bin/bash

for file in *.png
do
    filename=$(basename "$file")
    filename=${filename%.*}
    convert $file $filename.tif
done

これがどのように機能するかの行ごとのウォークスルー:

  • for file in *.png-拡張子ls *.png付きのファイルのリストを取得するためにコマンド置換は必要ありません。pngワイルドカード*はシェルで自動展開され、cwd のファイル リストと一致します。この場合、末尾が.png.
  • filename=$(basename "$file")- これは防御的プログラミング専用です。ファイルの実際の名前を取得します
  • filename=${filename%.*}-これにより、拡張子が削除されますfilename
  • convert $file $filename.tif-実際の変換コマンドを実行します
于 2012-11-12T21:30:52.460 に答える