Versuchen Sie dies in einer bash
Shell:
find -type f -name "*_001.jpg" -print0 | while read -d $'\0' f; do t=$(mktemp --tmpdir=$(dirname "$f")) [ -f "$_002.jpg" ] && \ mv -v "$f" "$t" && mv -v "$_002.jpg" "$f" && mv -v "$t" "$_002.jpg" done
Als Skript sollte es so aussehen (etwas lesbarer):
#!/bin/bash find -type f -name "*_001.jpg" -print0 | while read -d $'\0' f; do t=$(mktemp --tmpdir=$(dirname "$f")) [ -f "$_002.jpg" ] && \ mv -v "$f" "$t" && \ mv -v "$_002.jpg" "$f" && \ mv -v "$t" "$_002.jpg" done
Erläuterung:
- Zuerst erstellen wir eine Liste von Dateien mit
find
. Um seltsame Dateinamen zu verarbeiten, verwenden Sie diese-print0
, um Dateien mit dem Null-Byte zu trennen while read -d $'\0' f
:find
Liest die Ausgabe von begrenzt durch das Nullbyte- Erstellen Sie eine temporäre Datei
- Überprüfen Sie, ob beide Dateien vorhanden sind
- Verschieben Sie das Original (001) in die Tempfildatei
- Bewegen Sie 002 zu 001
- Verschieben Sie die Tempfile auf 002