kostenloser Webspace werbefrei: lima-city


Linux: Verschieben von Dateien nach Datum

lima-cityForumHeim-PCBetriebssysteme

  1. Autor dieses Themas

    s********s

    Hallo Leute,

    habe im Moment ein Problem, an dem ich zu nagen hab.
    Das ganze spielt auf einer Linux-Kiste ab. (SuSE ES) Dort liegen in einem Folder über 5000 Dateien jeweils vom September & Oktober.

    Über einen ls -l | grep 2008-09 werden mir bspw. nur die Dateien vom Sep. angezeigt.
    Wie kann ich nun diese Dateien in einen separaten Ordner Sep verschieben. Selbiges möchte ich auch mit den Dateien vom Oktober machen.

    Evtl. ist das über eine For-Schleife machbar.
    Könnt ihr mir hierbei weiterhelfen?

    PS: Wir arbeiten nur mit der Shell auf unseren Servern. :angel:

    Gruß,
    --Sovietcars--


    Beitrag geändert: 9.10.2008 11:25:28 von sovietcars


    Beitrag geändert: 9.10.2008 11:44:16 von sovietcars
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. kochmarkus

    Co-Admin Kostenloser Webspace von kochmarkus

    kochmarkus hat kostenlosen Webspace.

    find . -maxdepth 1 -type f -mtime 10 -exec mv #{#} Sep/ #;


    # bitte durch \\ ersetzen. Blöde Forensoftware ;)

    Ist zwar ungetestet, sollte aber funktionieren.

    Zur Erläuterung:

    . bedeutet es wird im aktuellen Verzeichnis gesucht
    maxdepth 1 bedeutet, es wird nur im aktuellen Verzeichnis gesucht
    type f bedeutet es wird nur nach Dateien gesucht
    mtime 10 bedeutet die Datei wurde vor mehr als zehn Tagen zuletzt bearbeitet (Heute ist der 10. Oktober)
    exec gibt einen Befehl an der ausgeführt wird
    mv der Befehl der ausgeführt wird
    \\{\\} wird durch den Dateinamen ersetzt
    Sep/ ist das Verzeichnis in das Verschoben wird
    \\; beendet exec


    Beitrag geändert: 10.10.2008 15:49:15 von kochmarkus
  4. Autor dieses Themas

    s********s

    Hey! Danke!

    habe es bereits anders gelöst.
    Der find - Befehl kann mir leider nicht genau die Dateinen aus einem Monat filtern.
    Habe mir dazu ein kleines Script geschrieben. Es waren ja wie gesagt über 5000 Dateien in dem Ordner.
    Daher bekam ich immer die Fehlermeldung "Argument list too long".

    Mit dem Scripte konnte ich nach Monaten sortiert verschieben.

    #!/bin/bash
    # Autor: Ich =)
    # Datum: 09.10.2008
    
    echo "Geben Sie die Liste ein:"; read liste;
    echo "Geben Sie das den Monat ein (JJJJ-MM):"; read datum;
    echo "Geben Sie den Zielordner ein:"; read ziel;
    
    grep $datum $liste | awk '{print $8}' | while read file
    do {
    echo $file;
    mv $file $ziel;
    } done


    Mit der ersten Abfrage wird die Liste angefordert, die per
    ls -l > list.txt

    Dann wird nach dem Jahr und dem Monat gefragt. Bspw. "2008-09" für September.
    Zum Schluss wird nach dem Zielordner gefragt.

    Läuft perfekt, und umgeht diese Einschränkung der zu langen Argument-Liste.

    Gruß,
    --Sovietcars--


    Beitrag geändert: 10.10.2008 16:29:59 von sovietcars
  5. kochmarkus

    Co-Admin Kostenloser Webspace von kochmarkus

    kochmarkus hat kostenlosen Webspace.

    Bei deiner Lösung solltest du aber auch beachten, dass Dateien die zufällig ein "2008-09" im Namen haben verschoben werden.
  6. Autor dieses Themas

    s********s

    Danke für den Hinweis! ;)
    Die Namen sind alle mit einem langen kryptischen Namen aus Zahlen und Buchstaben, und haben keine weitere Bedeutung.
    Beispiel: "xxxxxxxxxxx09187234107234.txt"
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!