Linux: Wie "move ???01*.* 01" emulieren?

Antworten
Benutzeravatar
Blade
Beiträge: 1801
Registriert: 15.11.2005 21:45:26
Wohnort: 40880 Ratingen
Kontaktdaten:

#1 Linux: Wie "move ???01*.* 01" emulieren?

Beitrag von Blade »

Unter DOS gings noch ganz einfach ...

Da es hier ja auch einige Linuxer gibt, kann mir vielleicht jemand helfen...
Ich brauch unter Linux mal die Syntax für eine Datei-Verschiebe Operation.

Ich habe z.B. eine Datei
13.03.2003 08-54-59 1600 Finepix ... usw.jpg
.. und noch 100te andere, ebenfalls aus März.
Die will ich in das Unterverzeichnis "03" verschieben.

mv ???03* 03
oder
mv ???03*.* 03

funktioniert nicht ....




Hintergrund
Ich hatte mal 160.000 jpg Bilder .. alle selbst fotografiert.
Alle schön geordnet mit Beschreibung im Dateinamen und chronologisch in Verzeichnissen wie:
/foto/2003/03/13 usw....
Halt nen Fototagebuch...
Dann kam der böse Virus der komischerweise nur MP3 (Musik) und JPG (Covers vermutet?) angegriffen hat .. (DANKE SONY !!! WEM SONST TRAU ICH SOWAS ZU?!) *(Ich mein .. ist doch merkwürdig, oder .. mp3 und jpg anzugreifen ..)

Naja .. Mittlerweile hat ein Proggi die Bilder wieder zurückgeholt.
Aber mit Dateinamen RESCUE00001 etc ...
Mit ACDSEE hab ich anhand der EXIF Informationen zumindest das Datum in den Dateinamen gekriegt.

Mittlerweile liegen die Bilder aber nicht mehr auf nem Windows PC sondern auf meinem Linux Datei Server (z.B. damit sich sowas nicht so schnell wiederholt) ..

Über Umwege könnte ich per Total Commander und FTP oder Midnight Commander zwar zumindest die Syntax per Hand anwenden ...

Aber mein Ziel ist es, die Dateien per Batch bzw. Script ala
#!/bin/sh
mv ???01*.* 01
mv ???02*.* 02
...usw

automatisch ordnen zu lassen...

Und da es rund 60GB Bilder sind, scheidet umkopieren auf WinPC und zurück auf Linux Server aktuell wegen Platznot aus ...
Blade empfiehlt: DMFV IV - Blade fliegt: minicopterJoker - und flog: Trex 450 verkauft - Trex 600E verkauft - Blade bloggt: Mariosagt.de!
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63792
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#2

Beitrag von tracer »

Wen Du bis heute Abend keine Lösung bekommen hast, schreibe ich Dir nen Bash script, muss nur jetzt gleich los, zu ner Schulung.
Ringding
Beiträge: 151
Registriert: 17.04.2005 19:01:49

#3

Beitrag von Ringding »

Wieso geht das nicht? Sollte eigentlich schon, außer es sind zu viele.

Dann mach: find -maxdepth 1 -name "???01*.*" | xargs mv --target-directory=01
Benutzeravatar
Blade
Beiträge: 1801
Registriert: 15.11.2005 21:45:26
Wohnort: 40880 Ratingen
Kontaktdaten:

#4

Beitrag von Blade »

@tracer .. das wäre, aber nur, wenns nicht zuviel Aufwand macht, KLASSE

@Ringding ...
Habs grade probiert ...

sieht ca. so aus .. (genauso wie das direkt angewandte "mv" übrigens)

mv: Aufruf von stat fЭr ,,-" nicht mЖglich: Datei oder Verzeichnis nicht gefunden
mv: Aufruf von stat fЭr ,,01848.jpg" nicht mЖglich: Datei oder Verzeichnis nicht gefunden
blacky:/pub/hdd5/Foto/Rescue/2004#

wobei ein DIR-Auszug so aussieht ....
16.06.2004 21-23-04 1600x1200 PENTAX Optio S - 08604.jpg 23.02.2004 16-47-53 2848x2136 FinePix S7000 - 01263.jpg
16.06.2004 21-23-12 1200x1600 PENTAX Optio S - 08826.jpg 23.02.2004 16-47-53 2848x2136 FinePix S7000 - 01395.jpg
16.06.2004 23-03-42 1600x1200 PENTAX Optio S - 03192.jpg 23.02.2004 16-47-53 2848x2136 FinePix S7000 - 02333.jpg
16.06.2004 23-04-00 1200x1600 PENTAX Optio S - 03242.jpg 23.02.2004 16-47-53 2848x2136 FinePix S7000 - 02334.jpg
17.02.2004 16-56-33 2832x2128 FinePix F601 ZOOM - 08930.jpg 23.02.2004 16-47-54 2848x2136 FinePix S7000 - 00591.jpg
17.02.2004 16-57-07 2832x2128 FinePix F601 ZOOM - 01679.jpg 23.02.2004 16-47-54 2848x2136 FinePix S7000 - 02894.jpg

Es gibt ausserdem bereits die vorhandenen Verzeichnisse "01" - "12" also für die Monate .....
Blade empfiehlt: DMFV IV - Blade fliegt: minicopterJoker - und flog: Trex 450 verkauft - Trex 600E verkauft - Blade bloggt: Mariosagt.de!
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63792
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#5

Beitrag von tracer »

Erstmal ist Deine LC_ALL kaputt, der versufht deutsch zu reden.

Dann auf jeden Fall Hochkomma um die Namen, wegen der Leerzeichen.
Benutzeravatar
Quaxx
Beiträge: 1099
Registriert: 13.01.2005 13:29:11
Wohnort: Berlin

#6

Beitrag von Quaxx »

Probier's mal mit dem kleinen bash-script:

Code: Alles auswählen

#!/bin/sh
for i in 01 02 03 04 05 06 07 08 09 10 11 12; do
  find -maxdepth 1 -name "???$i*.jpg" -exec mv {} $i/ \;
done
Steffen

NACHTRAG: Die Klammern bei mv sind geschweifte Klammern, sieht man nicht so gut, am besten das gesammte Script in ein Datei kopieren.
T-Rex 450 (ohne V2, SE oder sowas), Pikke 450, Picc Pro, MWC (i.A.)

Merke: Ist es zu kalt zum Fliegen/weht zu viel Wind, lass' es bleiben!
----------------------------------------------------------------------------------
Der kleine Wiki braucht Hilfe, bitte hilf ihm: (http://wiki.rc-heli-fan.org/)
Benutzeravatar
Blade
Beiträge: 1801
Registriert: 15.11.2005 21:45:26
Wohnort: 40880 Ratingen
Kontaktdaten:

#7

Beitrag von Blade »

Quaxx hat geschrieben:Probier's mal mit dem kleinen bash-script:

Code: Alles auswählen

#!/bin/sh
for i in 01 02 03 04 05 06 07 08 09 10 11 12; do
  find -maxdepth 1 -name "???$i*.jpg" -exec mv {} $i/ \;
done
Steffen

NACHTRAG: Die Klammern bei mv sind geschweifte Klammern, sieht man nicht so gut, am besten das gesammte Script in ein Datei kopieren.
He, cool! Das funzt!

Thx!!!

Denn ich muss das in mehreren Schritten machen, also leider nicht nur 1x pro Jahr .. sonst werden die Verzeichnisse in denen die Jahre gesammelt werden zu fett .. dann tut sich nix mehr im Dateisystem ^^

Also: Muchas Gracias, das hat viel frustige* Hand-Arbeit erspart!!!
*(weils ja logisch ist, das der PC das eigentlich selbst könnte)...
Blade empfiehlt: DMFV IV - Blade fliegt: minicopterJoker - und flog: Trex 450 verkauft - Trex 600E verkauft - Blade bloggt: Mariosagt.de!
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
Benutzeravatar
Quaxx
Beiträge: 1099
Registriert: 13.01.2005 13:29:11
Wohnort: Berlin

#8

Beitrag von Quaxx »

:mrgreen: Keine Ursache!

Aber das script so anzupassen, daß die Dateien erst jahrweise in Verzeichnisse sortiert werden, ist ja auch nicht so schwer ;)

Steffen
T-Rex 450 (ohne V2, SE oder sowas), Pikke 450, Picc Pro, MWC (i.A.)

Merke: Ist es zu kalt zum Fliegen/weht zu viel Wind, lass' es bleiben!
----------------------------------------------------------------------------------
Der kleine Wiki braucht Hilfe, bitte hilf ihm: (http://wiki.rc-heli-fan.org/)
Benutzeravatar
Blade
Beiträge: 1801
Registriert: 15.11.2005 21:45:26
Wohnort: 40880 Ratingen
Kontaktdaten:

#9

Beitrag von Blade »

Ja, ne, kein Thema, Bin zwar noch weit davon entfernt die geniale (*schleim* ^^) Funktionsweise komplett zu verstehen, aber wie ich die Optionen ändere/nutzen kann hab ich kapiert ^^

:-) :happy3:
Blade empfiehlt: DMFV IV - Blade fliegt: minicopterJoker - und flog: Trex 450 verkauft - Trex 600E verkauft - Blade bloggt: Mariosagt.de!
Wenn 3 Frauen in einem Schuhgeschäft sind, und 5 rauskommen, müssen 2 wieder reingehen, damit keine mehr drin ist.
Benutzeravatar
Quaxx
Beiträge: 1099
Registriert: 13.01.2005 13:29:11
Wohnort: Berlin

#10

Beitrag von Quaxx »

Ich habe nochmal ein wenig rumgescriptet und das ganze kommentiert:

Code: Alles auswählen

#!/bin/sh

# schleife, die durch die einzelnen jahre geht
for JAHR in 1998 1999 2000 2001 2002 2003 2004 2005 2006 ; do
  # test ob jahresverzeichnis schon existiert, wenn nicht, dann anlegen
  if [ ! -d $JAHR ]; then
    mkdir $JAHR
  fi
  # monatsschleife
  for MONAT in 01 02 03 04 05 06 07 08 09 10 11 12; do
    # test ob das monatsverzeichnis schon existiert, wenn nicht, dann anlegen
    if [ ! -d $JAHR/$MONAT ]; then
      mkdir $JAHR/$MONAT
    fi
    # suche nach jpg-dateien, nach monat und jahr suchen und in verzeichnis verschieben
    # maximal ein verzeichnis tief suchen
    find -maxdepth 1 -name "??.$MONAT.$JAHR*.jpg" -exec mv {} $JAHR/$MONAT/ \;
  # ende der monatschleife
  done
# ende der jahresschleife
done
Das Script legt die nötigen Verzeichnisse gleich mit an wenn sie noch nicht existieren.

:mrgreen:
Steffen
T-Rex 450 (ohne V2, SE oder sowas), Pikke 450, Picc Pro, MWC (i.A.)

Merke: Ist es zu kalt zum Fliegen/weht zu viel Wind, lass' es bleiben!
----------------------------------------------------------------------------------
Der kleine Wiki braucht Hilfe, bitte hilf ihm: (http://wiki.rc-heli-fan.org/)
Ringding
Beiträge: 151
Registriert: 17.04.2005 19:01:49

#11

Beitrag von Ringding »

Bei meinem Befehl hättest du bei find noch das Argument -print0 und bei xargs das Argument -0 verwenden müssen, weil du so viele ekelhafte Leerzeichen in den Filenamen hast.
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63792
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#12

Beitrag von tracer »

Etwas vereinfacht:

Code: Alles auswählen

# setup
FROM_YEAR=1998
TO_YEAR=2006


set -x
for JAHR in $(seq $FROM_YEAR $TO_YEAR); do
   # test ob jahresverzeichnis schon existiert, wenn nicht, dann anlegen
   if [ ! -d $JAHR ]; then
     mkdir $JAHR
   fi
   # monatsschleife
   for MONAT in $(seq 01 12); do
     # test ob das monatsverzeichnis schon existiert, wenn nicht, dann anlegen
     if [ ! -d $JAHR/$MONAT ]; then
       mkdir $JAHR/$MONAT
     fi
     # suche nach jpg-dateien, nach monat und jahr suchen und in verzeichnis verschieben
     # maximal ein verzeichnis tief suchen
     find -maxdepth 1 -name "??.$MONAT.$JAHR*.jpg" -exec mv {} $JAHR/$MONAT/ \;
   # ende der monatschleife
   done
 # ende der jahresschleife
 done
Benutzeravatar
Quaxx
Beiträge: 1099
Registriert: 13.01.2005 13:29:11
Wohnort: Berlin

#13

Beitrag von Quaxx »

Hmmm... seq lässt die führenden Nullen beim Monat weg

Steffen
T-Rex 450 (ohne V2, SE oder sowas), Pikke 450, Picc Pro, MWC (i.A.)

Merke: Ist es zu kalt zum Fliegen/weht zu viel Wind, lass' es bleiben!
----------------------------------------------------------------------------------
Der kleine Wiki braucht Hilfe, bitte hilf ihm: (http://wiki.rc-heli-fan.org/)
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63792
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#14

Beitrag von tracer »

Quaxx hat geschrieben:Hmmm... seq lässt die führenden Nullen beim Monat weg
Sorry, "seq -w 1 12"
Benutzeravatar
Quaxx
Beiträge: 1099
Registriert: 13.01.2005 13:29:11
Wohnort: Berlin

#15

Beitrag von Quaxx »

Sweeeeeeet :mrgreen:

Steffen
T-Rex 450 (ohne V2, SE oder sowas), Pikke 450, Picc Pro, MWC (i.A.)

Merke: Ist es zu kalt zum Fliegen/weht zu viel Wind, lass' es bleiben!
----------------------------------------------------------------------------------
Der kleine Wiki braucht Hilfe, bitte hilf ihm: (http://wiki.rc-heli-fan.org/)
Antworten

Zurück zu „Klönschnack“