ubuntuusers.de

Skript, um Duplikate zu ERHALTEN

Status: Gelöst | Ubuntu-Version: Kubuntu 14.04 (Trusty Tahr)
Antworten |

init.d

Anmeldungsdatum:
24. Mai 2005

Beiträge: Zähle...

Hallo zusammen,

die meisten Tools und Skripte sind ja da, um Duplikate zu löschen. Ich such genau das umgekehrte: Ich habe in Verzeichnis A) jpgs und in B) dazu die raws. Nehmen wir an, ich schmeiß die Hälfte der jpegs weg: jetzt würd ich gern in Verzeichnis B) die verwaisten raws löschen wollen.

Dank Euch herzlich für jeden Tip!

*INIT (;

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Du machst 2 Listen mit dem Name ohne Dateinamenerweiterung und vergleichst Sie:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Liste 1 (JPG-Dateien)
ls -1 verzeichnisA | sed -e 's/\.jpe?g$//'

# Liste 2 (RAW-Dateien
ls -1 verzeichnisB | sed -e 's/\.raw$//'

# vergleichen:
diff <(ls -1 a|sed -r 's/\.jpe?g//') <(ls -1 b|sed -e 's/\.raw//')

# für Kolorierung:
sudo apt-get install colordiff
diff <(ls -1 a|sed -r 's/\.jpe?g//') <(ls -1 b|sed -e 's/\.raw//') | colordiff

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13207

misterunknown schrieb:

Du machst 2 Listen mit dem Name ohne Dateinamenerweiterung und vergleichst Sie:

Aber nicht mit ls! Das ist viel zu fehlerträchtig. Man sollte ls nur zum Anzeigen benutzen.

1
2
3
4
5
6
for f in b/*.raw; do
  base="${f##*/}"
  base="${base%.*}"
  base="a/${base%.*}"
  test -e "$base.jpg" -o -e "$base.jpeg" || echo rm "$f"
done

Den echo in Zeile 3 entfernen, wenn es funktioniert.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

rklm schrieb:

1
2
3
4
5
6
for f in b/*.raw; do
  base="${f##*/}"
  base="${base%.*}"
  base="a/${base%.*}"
  test -e "$base.jpg" -o -e "$base.jpeg" || echo rm "$f"
done

Den echo in Zeile 3 entfernen, wenn es funktioniert.

Oder den in Zeile 5, je nach Zählweise. ☺

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

rklm schrieb:

Aber nicht mit ls! Das ist viel zu fehlerträchtig.

Ok, also ich habe in ls noch keine Fehler feststellen können, aber es gibt natürlich andere Möglichkeiten.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13207

user unknown schrieb:

rklm schrieb:

Den echo in Zeile 3 entfernen, wenn es funktioniert.

Oder den in Zeile 5, je nach Zählweise. ☺

😬 Ups, da habe die wohl vergessen die Nummerierung anzupassen. Dank Dir! 👍

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13207

misterunknown schrieb:

rklm schrieb:

Aber nicht mit ls! Das ist viel zu fehlerträchtig.

Ok, also ich habe in ls noch keine Fehler feststellen können, aber es gibt natürlich andere Möglichkeiten.

Das hat nichts damit zu tun, dass ls Fehler enthält. Es ist schlicht das 🇬🇧 falsche Werkzeug für den Job.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

rklm schrieb:

Das hat nichts damit zu tun, dass ls Fehler enthält. Es ist schlicht das 🇬🇧 falsche Werkzeug für den Job.

Ah ok. Weil du was von "viel zu fehlerträchtig" geschrieben hast. War wohl etwas übertrieben.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13207

misterunknown schrieb:

rklm schrieb:

Das hat nichts damit zu tun, dass ls Fehler enthält. Es ist schlicht das 🇬🇧 falsche Werkzeug für den Job.

Ah ok. Weil du was von "viel zu fehlerträchtig" geschrieben hast. War wohl etwas übertrieben.

Nein, war es nicht. Aber der Bezug ist nicht eindeutig: Mit "es" hatte ich nicht ls selbst gemeint sondern das Erzeugen von Dateilisten - und das ist mit ls fehlerträchtig, wie Du in dem verlinkten Artikel nachlesen kannst.

init.d

(Themenstarter)

Anmeldungsdatum:
24. Mai 2005

Beiträge: 52

Vielen Dank, funktioniert super!

Antworten |