#scripting Kopiere jede zehnte Datei in einen anderen Ordner

Für ein Zeitraffer-Projekt haben wir zwei GoPro Kameras an unterschiedlichen Orten positioniert und sie alle 60 Sekunden ein Bild aufnehmen lassen.  Das ist auch leider die maximale Zeit die man an der GoPro einstellen kann. Weil wir aber so viele Bilder gar nicht benötigen, hatte ich damals ein Script geschrieben, dass die  Datei auf der SD-Karte indiziert und dann nur jedes zehnte Bild kopiert.

Bei diesem Zeitraffer-Projekt nun habe ich erstmal alle Bilder gesammelt. Immer irgendwie in Ordner die ich nach dem Tag benannt habe, an dem ich den Import durchgeführt habe. Jetzt gilt es, diese vielen Datei auszusortieren und für das Zeitraffer-Video brauche ich wirklich nur jedes zehnte Bild. Ist ja ein Bauprojekt was über 2 Jahre geht. Da braucht es nicht so viele Bilder.

Tja, und was soll ich noch lange erzählen, das Kommando, welches über alle Verzeichnisse läuft und nur jede zehnte Datei kopiert passt in eine Zeile. Naja in zwei, denn ich habe es erst ausprobiert und dann einen Alias erzeugt.

ls | awk NR%10==0 | xargs -I{} cp "{}" ../zielOrdner

daraus macht man dann mit

alias cpfiles="ls | awk NR%10==0 | xargs -I{} cp "{}" ../zielOrdner"

ein Alias und fügt den in den folgenden Loop ein

for d in ./*/ ; do (cd "$d" && cpfiles); done

Jetzt wechselt man in das Verzeichnis mit den ganzen GOPRO Ordnern und führt den Loop aus. Damit werden die Datei schon sauber in ein extra Verzeichnis kopiert. Da nicht verschoben wird, kann in der Nachbearbeitung immer noch das ein oder andere Original-Bild nachgeladen werden.

Von hier, hier und hier habe ich das zusammengebaut.

Dieser Beitrag wurde unter Allgemein, Programming, Unix/Linux abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.