2016-04-25 2 views
1

Linux Bash, Centos.Linux: Wie Sie ein Suffix zu Dateien hinzufügen, die die Erweiterung beibehalten

Wie ein Suffix zu Dateien hinzufügen, die Erweiterung beibehalten? Ich könnte eine Antwort darüber finden, wie man eine Dateiendung ändert oder hinzufügt, aber nicht, wie man ein Suffix mit der Erweiterung hinzufügt ...

Beispiel: Wenn ich das '_thumb' Suffix zu allen Bilddateien hinzufügen möchte (. jpg, .png, .gif, .JPEG) in einem Verzeichnis.

somefile.jpg -> somefile_thumb.jpg

EDIT: Wenn möglich, das Skript neu gestartet und nicht die Dateien, die bereits umbenannt wurden, beeinflussen kann. Um der Liste weitere Erweiterungen hinzuzufügen.

Vielen Dank im Voraus!

Antwort

4

können Sie verwenden:

shopt -s nullglob 
for f in *.jpg *.png *.gif *.JPEG; do 
    [[ $f != *_thumb.* ]] && mv "$f" "${f%.*}_thumb.${f##*.}" 
done 
+0

Vielen Dank! Es läuft. Aber noch ein Zweifel: Wenn ich das Skript neu starten möchte und die Dateien, die bereits umbenannt wurden, nicht umbenennen will? (Zum Beispiel, um einige Erweiterungen hinzuzufügen) – MikeBau

+0

Überprüfen Sie die aktualisierte Antwort. Es wird das Umbenennen der gleichen Dateien beim nächsten Mal übersprungen. – anubhava

+1

Ausgezeichnet, danke. Ich denke, es ist jetzt vollständiger – MikeBau

1

In einer leichten Variation, können Sie nur die Entfernung der durch gefundene Verlängerung erzwingen:

mv "$file" "${file%.${file##*.}}_thumb.${file##*.}" 
0

‚umbenennen‘ Befehl ist wahrscheinlich das, was Sie suchen :

rename 's/^(.*)\.(png|jpg|gif|JPEG)$/$1_thumbnail.$2/' *.png *.jpg *.gif *.JPEG 

zur Erklärung:

  • erstes Argument in Anführungszeichen bedeutet Substitution: 's/regex-what-to-find/Ersatz-string /'
  • diese regex jeden Dateinamen übereinstimmt, die durch zufällige Zeichenfolge beginnt und endet mit dem Punkt von einem der aufgeführten Erweiterungen angehängt
  • Regex-Teile, die in runden Klammern eingeschlossen sind, speichern übereinstimmende Teilzeichenfolgen in Variablen wie $ 1 und $ 2, die in der Ersetzungszeichenfolge verwendet werden.
  • * .png * .jpg * .gif * .JPEG sind nur Dateiliste, Sternchen werden durch Shell zur vollen Dateiliste erweitert. Sie können nur einen Stern verwenden, wenn Sie nur Bilder im Verzeichnis haben.
+0

Während dieser Code die Frage beantworten kann, bietet zusätzliche Kontext in Bezug auf warum und/oder wie es die Frage beantwortet würde erheblich seinen langfristigen Wert zu verbessern. Bitte [bearbeiten] Sie Ihre Antwort, um eine Erklärung hinzuzufügen. – CodeMouse92

Verwandte Themen