Dateien mit nach Erstellungsdatum in Ordner verschieben

C

CAR

Jungspund
Hallo Forum,

ich habe ca. 10000 Dateien und möchte diese in Ordner nach Ihrem Erstellungsdatum verschieben. Die Ordner mit jahr-monat-datum benennen.

Wer kann mir einen Tipp geben, bin leider(!!) Anfänger. Tipp für Anfängerbücher bzw. Links nehm ich auch gern an! Danke vorab schon!!
 
Hi,

man ls
man cut
man awk
man bash

So, und hier ein kleiner Skript:
Code:
ls -l --full-time --time=ctime | grep "^-" | while read line
do 
    DIR=`echo $line | awk '{print $6}'`
    FILE=`echo $line | cut -f 9- -d " "`
    [ -d $DIR ] || echo mkdir $DIR
    echo mv "$FILE" $DIR
done

Code ohne Gewähr. Aber der sollte eigentlich nur Anzeigen was er machen würde. Das kannst Du dann ausprobieren. Wenn die Ausgabe in Ordnung ist, kannst du dann das "echo" vor mkdir und mv weglassen. Dann macht er die Arbeit, so wie du es gewollt hast.

Grüße,
 
Großen Dank für Deine Antwort!! Musste jetzt umdisponieren, so dass sich die Aufgabe verändert hat. Ich möchte nun jede 2. Datei aus dem Ordner in einen anderen verschieben.

Ich habe mir nun dieses Script zusammengedacht - wie gesagt, hab ich wenig Ahnung vom Syntax etc.

Code:
#! /bin/sh
varSchrittvor=2

for((i=0;i<30000;i+varSchrittvor));
cd /Users/benutzer/Documents
mv zuverschiebendedatei.jpg/Neuer_Ordner
done


Ich weiß, dass das noch gar nicht logisch ist (z.B. also wo steht der Pfad zu den Dateien und wo geb ich den neuen an...), hab aber keinen Ansatz wie weiter.

Dank für Hilfe!!!!
 
Hi, ich verstehe die Logik zwar nicht, aber da kannst du eventuell mit Wildcards arbeiten.

z.B.

Code:
mv [a-m]* A-M-Ordner
So schafst du ungefähr die "Hälfte" der Dateien in einem Ordner. Möglicherweise ist hier dann ein Normaler Filemanager wie Nautilus oder konqueror praktischer.

Sonst könnte so was funktionieren

Code:
#!/bin/bash
#

GERADE=0
ls -1 | while read FILE
do
 [ $GERADE -eq 1 ] && GERADE=0 || GERADE=1
 [ $GERADE -eq 1 ] && echo mv "$FILE" DIR   # jede "gerade" Datei verschieben
done

hier ist das selbe. Du kannst so testen, wenn die Ausgabe gefällt, dann das "echo" vor dem mv weglassen.

Du kannst sicherheitshalber "mv -i" verwenden, damit keine Dateien überschrieben werden.

Die Anzahl der Dateien in einem Verzeichnis kannst du dann so zählen:
Code:
ls -1 | wc -l
Grüße
 
Hm, arbeite mit MacOSX 10.6.2 Leopard Snow frag mich gerade, ob da Deine Syntax passt....

Verstehe Dein Script, allerdings ist mir nicht klar, wo ich jetzt genau das Verzeichnis angebe, in welchem die Dateien liegen.
 
Statt "ls -1" "ls -i QUELORDNER"
oder
cd QUELORDNER zuerst machen.

Syntax muss nicht stimmen. Ich habe es nicht ausprobiert, aber so ungefähr müsste es Funktionieren.
 

Ähnliche Themen

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

Spalten einer Datei in neue Datei integrieren.

Samba Dateien und Ordner verschieben

Router einbinden bei Webauth?

Freie Software auf dem Smartphone

Zurück
Oben