2017-01-25 7 views
0

Ich arbeite mit vielen Bildern auf einem MacOSX 10.12. Um einige Bildanalysen durchzuführen, muss ich das Format von .JPG in .gif ändern.Batch entfernen ehemaligen von zwei Dateierweiterungen

Mit ImageMagick habe ich es relativ schnell gemacht, und jetzt habe ich mehrere Dateien mit der doppelten Erweiterung * .JPG.gif.

Ich möchte den ".JPG" Teil aus dem Dateinamen entfernen, aber aus irgendeinem Grund funktioniert nicht, was ich tue funktioniert nicht. (Ich sollte sagen, dass dieser Schritt wahrscheinlich nicht entscheidend ist für das, was ich als nächstes tun muss, aber da ich viele Dateien habe, die ihren Namen so viel wie möglich vereinfachen, ist wahrscheinlich das Beste. Ich sollte auch sagen, dass ich die Super-User-Erlaubnis habe und keiner der Dateinamen enthält tatsächlich Bremsen oder Leerzeichen, so dass sogar das Hinzufügen des "" zu meinem Code nichts ändert. Hier

ist das, was ich versuche, einen Bash-Skript:

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

Mein Verständnis ist, dass dieser Code sollte das .JPG Teil von $ file starten, das Spiel von vorne die Namen der Datei entfernen. Und dennoch, wenn ich den Befehl ls anrufe, um zu sehen, ob das Programm das getan hat, was es tun soll, sind alle Namen immer noch mit der doppelten Erweiterung vorhanden.

Jede Hilfe wird sehr geschätzt.

Antwort

1

Ändern Sie bitte Ihre mv Befehl wie folgt aus:

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

Ihre erste Code verwendet eine Erweiterung, die Text von Anfang an, nicht in der Mitte entfernt. Die obige Erweiterung wird innerhalb der Zeichenfolge entfernt.

Bitte beachten Sie, dass dies nicht sehr robust ist. Wenn Sie ".JPG" in Ihrem Pfad oder Dateinamen irgendwo außer am Ende Ihrer Dateinamen haben, wird es nicht tun, was Sie wollen. Das Zitieren, auch wenn es in Ihrem Fall noch nicht notwendig ist, ist immer noch eine gute Übung, da sich die Dinge ändern und der Code kopiert und eingefügt wird.

+0

Übrigens, ich mag diese Quelle als Zusammenfassung verschiedener Formen der Expansion in bash: http://wiki.bash-hackers.org/syntax/pe. – Fred

+0

Danke Fred, das hat mein Problem gelöst. – Cinghio

Verwandte Themen