Bestimmte Dateien per Script Verschieben ...

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
layer8
Beiträge: 74
Registriert: 12.05.2012 19:46:18
Wohnort: 58285

Bestimmte Dateien per Script Verschieben ...

Beitrag von layer8 » 09.10.2012 22:07:09

Moin, derweil hänge ich mal wieder etwas. Ich Ordner mit Bildern ... Daraus möchte ich einige woanderst hinkopieren.Soweit ist das ja kein Thema.

Bilder-Ordner
-- Stadt
--- 1980
--- 1981
--- 1982
bis 2012
-- Natur
--- 1980
--- 1981
--- 1983
bis 2012
-- Architektur
--- 1980
--- 1982
--- 1983
bis 2012
etc

Jetzt möchte ich jeweils zB 1982, 1992 und 2002 Kopieren. WIE stelle ich das an? Entweder liegt es am Schlafentzug oder weil ich den ganzen Tag vor der Kiste hänge. Mir fällt da einfach nichts ein, Leere im Kopf und so :)

Für einen Klatsch mit dem Zaunpfahl bin ich, wie immer, Dankbar!
Die Sicherheit einer Software lässt sich daran messen,
in wie vielen Ländern sie verboten ist.

wilfried
Beiträge: 153
Registriert: 04.12.2009 12:32:16

Re: Bestimmte Dateien per Script Verschieben ...

Beitrag von wilfried » 09.10.2012 22:36:59

man cp
Debian testing (wheezy)
Kernel Linux 3.2.0-3-686-pae
Mainboard: Fujitsu D3041-A1
CPU: Intel Pentium Dual-Core E5800 @ 3.20GHz, 4 GB RAM
Grafik: ATI RV710 [Radeon HD 4350]
eth0: RTL8111/8168B PCI Express Gigabit Ethernet

gingupin

Re: Bestimmte Dateien per Script Verschieben ...

Beitrag von gingupin » 09.10.2012 23:01:57

Moinsen...

verstehe ich Dich richtig? Du willst aus den jeweiligen Ordnern "Stadt", "Natur" und "Architektur" die
Unterordner eines bestimmten Jahres in einem separaten Ordner zusammenfassen?

:?: :?: :?: :?:

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Bestimmte Dateien per Script Verschieben ...

Beitrag von r900 » 09.10.2012 23:09:01

layer8 hat geschrieben:Mir fällt da einfach nichts ein, Leere im Kopf und so :)
Ja da musste ich auch erstmal ein bisschen Grübeln.. Also ich nehme an du willst bestimmte Jahre herauskopieren aber die Ordnerstruktur Stadt, Land, Fluss erhalten? :wink: Wir sind im Ordner Bilder, dann sieht ist der Befehl so aus:

Code: Alles auswählen

~/Bilder$ cp -R --parents */{1991,1992,1994} /dest/
Die Option --parents sorgt dafür dass die Ordnerstruktur erhalten bleibt und die brace-expansion {jahr1,jahr2,usw.} macht den Rest.

Nachtrag: Falls es so ist wie von gingupin vermutet müsstest du etwas genauer beschreiben wie die Ordnerstruktur unterhalb der Jahre aussieht und wie die Struktur im Zielverzeichnis werden soll.
Zuletzt geändert von r900 am 09.10.2012 23:18:01, insgesamt 1-mal geändert.

layer8
Beiträge: 74
Registriert: 12.05.2012 19:46:18
Wohnort: 58285

Re: Bestimmte Dateien per Script Verschieben ...

Beitrag von layer8 » 09.10.2012 23:16:12

gingupin hat geschrieben:Moinsen...

verstehe ich Dich richtig? Du willst aus den jeweiligen Ordnern "Stadt", "Natur" und "Architektur" die
Unterordner eines bestimmten Jahres in einem separaten Ordner zusammenfassen?

:?: :?: :?: :?:
Genau. Leider sind es nicht nur <10 Ordner sondern an die 45 Kategorien. Würde das auch zusammen Klicken, aber ich denke, das es per Script einfacher ist. man cp habe ich selbstverständlich schon geschaut. Wirklich schlau wurde ich daraus aber nicht.
Ich sollte noch dazu erwähnen, das die Dateien selbst zB "nat-1981-0001.jpeg" oder "arc-1986-0123.jpeg" heißen. das sollte es einfacher machen, oder?

gedacht hatte ich an:

Code: Alles auswählen

cp -R /home/layer8/Dokumente/Bilder-Archiv/*1982*.jpeg /media/usb0/vergleich/
Derzeit kann bzw. möchte ich es noch nicht testen, da ich die gerade nochmals komplett auf eine andere HDD kopiere/Archiviere.


@r900: haben gleichzeitig geschrieben :)
Die Sicherheit einer Software lässt sich daran messen,
in wie vielen Ländern sie verboten ist.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: Bestimmte Dateien per Script Verschieben ...

Beitrag von r900 » 10.10.2012 00:24:04

Jaha, hab ich's doch falsch verstanden. Ich würde sagen so müsste es gehen (aber erst weiterlesen!):

Code: Alles auswählen

~$ cp ~/Dokumente/Bilder-Archiv/*/{jahr1,jahr2,jahr3}/*.jpeg /media/usb0/vergleich/
Die Option -R brauchst du da nicht, da Dateien angeben werden und keine Verzeichnisse. Die shell findet in dem Fall alle Dateien die auf das Muster passen und setzt diese in die Kommandozeile ein. Wie bei allem gibt es aber auch bei der Kommandozeile Limitierungen und die können bei sowas durchaus erreicht werden. Mit find bist du auf der sicheren Seite:

Code: Alles auswählen

~$ find ~/Dokumente/Bilder-Archiv -regex '.*/\(jahr1\|jahr2\|jahr3\)/.*\.jpeg'
Wenn das die gewünschten Dateinamen auflistet kannst du alles kopieren indem du eine entsprechende "-exec" Option dranhängst:

Code: Alles auswählen

~$ find ~/Dokumente/Bilder-Archiv -regex '.*/\(jahr1\|jahr2\|jahr3\)/.*\.jpeg' -exec cp '{}' /media/usb0/vergleich/ ';'
Das führt dann für jede Datei das angegebene Kommando aus und packt nicht alles in eine Kommandozeile.

Antworten