Ich möchte alle Dateien auflisten, an denen sich keine Kopie mit demselben Dateinamen befindet -1. Im obigen Beispiel wären die Ergebnisse also 3.png.
Hinweis: Die Datei und ihre Kopie mit "-1" haben die gleiche Dateigröße, falls dies hilfreich ist.
Kann jemand vorschlagen, wie das geht?
2 Antworten auf die Frage
2
Kusalananda
Vorausgesetzt, dass alle Dateien -neine Kopie sind und Sie auch keine Daumen haben möchten, funktioniert dies in KornShell (ksh) und auch in Bash mit der extglobOption set ( shopt -s extglob):
for f in !(*_thumb.png|*-[1-9].png); do g=$-1.png test -f $g || echo $f done
0
OldWolf
Wenn nur "-1" bestimmt, dass es sich um eine Kopie handelt, haben Sie auch keine Kopie Ihrer Dateien 2-1.png oder 2-1_thumb.png. Wenn dies Ihre Übereinstimmungskriterien ist und Sie möchten, dass die Daumen ebenfalls getestet werden, können Sie dies tun
for i in `ls |grep -v "\-1" | cut -f1 -d.`; do if `echo $i | grep thumb > /dev/null`; then test -f `echo $i.png | sed 's/_/-1_/g'` || echo $i.png; else test -f $i-1.png || echo $i.png; fi; done
Andernfalls, wenn die Daumen nicht zählen, sollte die Antwort von KAK passen