2017-01-25 23 views
0

私はMacOSX 10.12で多くの画像を扱っています。 イメージ分析を行うには、フォーマットを.JPGから.gifに変更する必要があります。2つのファイル拡張子を一括で削除する

ImageMagickを使用して、私はそれを比較的短時間でやっています。今では、二重拡張子* .JPG.gifのファイルが複数あります。

ファイル名から ".JPG"部分を削除したいのですが、何らかの理由で私が行っていることが機能していません。 (私は、このステップはおそらく私が次にやらなければならないことに重大なものではないと言うべきですが、できるだけ多くの名前を簡略化するファイルがたくさんあるのでおそらく最高です。ファイル名には実際にブレーキやスペースが含まれていないので、私のコードに ""を加えても何も変わりません)。ここで

は、私はbashスクリプトを使用しようとしていますものです:

#!/bin/bash 
    for file in /folder/*.JPG.gif 
      do 
      mv $file ${file#.JPG} 
      done 

私の理解では、このコードは、ファイルの名前の前から試合を開始$ファイルから.JPG部分を削除しなければならないことです。しかし、私がlsコマンドを呼び出して、プログラムが何をするのかを確認すると、すべての名前はまだ二重拡張されています。

ご協力いただきまして誠にありがとうございます。

答えて

1

は、このようなあなたのmvコマンドを変更します。

#!/bin/bash 
for file in /folder/*.JPG.gif 
     do 
     mv "$file" "${file/\.JPG}" 
     done 

あなたの最初のコードではなく途中で、先頭からテキストを削除し、拡張を使用しています。上記の展開は、文字列の内部を削除します。

これはあまり強くないことに注意してください。あなたのパスに ".JPG"がある場合、またはファイル名の末尾以外のどこかのファイル名は、あなたが望むことをしません。あなたのケースでは今は必要ではないとしても、引用符で囲むことは、物事が変わるにつれて依然として良い習慣であり、コードはコピーされ貼り付けられます。

+0

ところで、私はこのソースがbashのさまざまな形式の拡張の要約として好きです:http://wiki.bash-hackers.org/syntax/pe。 – Fred

+0

フレッドさん、ありがとうございました。これが私の問題を解決しました。 – Cinghio

関連する問題