Move Problem

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von root@linux, 19.10.2005.

  1. #1 root@linux, 19.10.2005
    root@linux

    root@linux Grünschnabel

    Dabei seit:
    19.10.2005
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo !

    Ich habe ein Problem und weiß nicht wie ich es zu lösen habe. Ich möchte eine Reorganisation von Ordnern machen, die älter als 1 Tag sind und das Muster "test_bis*" haben. Diese sollen dann verschoben werden (in einen anderen Ordner).

    Nun habe ich fleißig an einem Skript gebastelt, dass auch meine betreffenden Ordner "moved", jedoch bekomme ich beim ausführen des Skriptes eine irritierende Meldung. "Datei oder Verzeichnis nicht gefunden". Warum bekomme ich dies in der Shell angezeigt obwohl er alles macht !!??

    Hier das Skript:

    #!/bin/ksh

    DEPLOY=~/test
    MUSTER=$DEPLOY/muster

    #Alle Ordner die aelter als 1 Tag sind landen im Ordner: "reorg"
    REORG=$DEPLOY/reorg

    #aelter als (Tage):
    DAYS=1

    cd $MUSTER
    find -type d -name "test_bis*" -mtime +$DAYS -exec mv {} $REORG \;

    :hilfe2:
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Arg, ich Depp. Hinter find musst Du noch das Verzeichnis angeben, also

    Code:
    find $MUSTER -type d -name "test_bis*" -mtime +$DAYS -exec mv {} $REORG \;
    
    oder

    Code:
    find . -type d -name "test_bis*" -mtime +$DAYS -exec mv {} $REORG \;
    
    wenn Du vorher in das Verzeichnis gewechselt bist.
     
  4. #3 root@linux, 19.10.2005
    root@linux

    root@linux Grünschnabel

    Dabei seit:
    19.10.2005
    Beiträge:
    5
    Zustimmungen:
    0
    Move

    Hallo Phorus,

    ich habe das Verzeichnis angegeben mit '.', hatte mich nur vertippt!! Ist also genauso wie du es im 2. Zitat sagst aufgebaut !! Trotzdem findet er das Verzeichnis und moved es aber gibt trotzdem eine Fehlermeldung auf der Konsole aus !! *komisch*!!
     
  5. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Hmm, das Problem ist, das zuerst die gefundenen Verzeichnisse bewegt werden und anschliessend "find" sich darüber aufregt, dass die gefundenen Verzeichnisse nicht mehr da sind, da sie ja bewegt wurden.
     
  6. #5 root@linux, 19.10.2005
    root@linux

    root@linux Grünschnabel

    Dabei seit:
    19.10.2005
    Beiträge:
    5
    Zustimmungen:
    0
    Move

    Ja, das habe ich mir auch gedacht aber er muss doch erstmal eine gefundene Menge haben, die er dann "sequentiell" an den exec weitergibt oder ? Ich meine sonst wäre dies doch unsinn oder ? Also ich weiß im Moment auch nicht weiter! Weil der find ohne die anderen Kommandos wird auch richtig ausgeführt (habe ich getestet). hmmmm ... trotzdem Danke !!

    Muss wohl noch ein wenig basteln *g*!
     
  7. #6 Wolfgang, 19.10.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Also deine Fehlermeldung ist logisch und normal.
    Was du als trotzdem ausgeführt ansiehst, sind nicht die Fehlermeldungen.
    Versetz dich in die Situation wie find mit exec hier arbeitet, und es wird klar.

    find sucht nach deinen Kriterien die entsprechenden Ordner und übergibt diese als Argumentliste an -exec mv.
    Dabei werden zuerst die Ordner in der ersten Ebene gefunden, dann steigt find eine Ebene höher und findet eventuell wieder Unterordner die zutreffen. Liegen diese nun unterhalb eines Ordners der weiter vorn als Argument schon in der Liste für mv steht, so wird mv zuerst den oberen Ordner samt Unterordner verschieben. Das bedeutet wenn der in der Argumentliste stehende Unterordner an die Reihe kommt findet mv diesen nicht mehr.
    Ausserdem kann es sein, wenn deine Option auf den Oberordner, aber auf einen in diesem befindlichen Ordner nicht zutrifft, dass das ergebnis nicht deinen Wünschen entspricht.
    Das musst du aber selbst wissen, was dann passieren soll - mv verschiebt ja alle Unterordner mit.
    mv beginnt erst dann zu arbeiten, wenn die Argumentliste fertig (find also fertig ist) zusammengestellt ist.
    Die Fehlermeldung kommt dann also von mv.
    Abhilfe kann hier eventuell die Option -depth schaffen.
    Deshalb kann es bei derartigen Konstrukten auch zu der allseits beliebten ;) Fehlermeldung:
    Argumentlist is to long
    kommen, wenn zu viele dateien gefunden werden.

    deshalb solltest du besser mit find ... |xargs arbeiten, da das für jedes Argument einen eigenen Prozess startet.

    Hoffe die Erklärung hilft dir ein wenig weiter.
    Bei weiteren Fragen, bin ich gern bereit zu erklären, so ich das kann. ;)
    Gruß Wolfgang
     
  8. #7 belubaba, 19.10.2005
    belubaba

    belubaba Tripel-As

    Dabei seit:
    20.09.2005
    Beiträge:
    184
    Zustimmungen:
    0

    Kenne ich auch und bin noch nicht dahintergekommen warum der Fehler kommt.

    Eine unelegante Lösung um die Fehlermeldung zu vermeiden wäre:

    Code:
    for i in `find . -type d -name "test_bis*" -mtime +$DAYS"`; do
        mv $i $REORG
    done
    
    belubaba
     
  9. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Ich würde die Option "-depth 1" empfehlen.

    Gruss, Phorus
     
  10. #9 root@linux, 20.10.2005
    root@linux

    root@linux Grünschnabel

    Dabei seit:
    19.10.2005
    Beiträge:
    5
    Zustimmungen:
    0

    Hallo Wolfgang!

    Danke für deinen Tip aber die Fehlermeldung kommt wohl vom "find:" komischerweise! das zeigt er mir auch an ! Aber werde jetzt erstmal die Methode mit der for schleife ausprobieren mal schauen ob das ohen Fehler funktioniert !!

    Gruß
     
  11. #10 root@linux, 20.10.2005
    root@linux

    root@linux Grünschnabel

    Dabei seit:
    19.10.2005
    Beiträge:
    5
    Zustimmungen:
    0
    Move Problem Beseitigt

    Also... ich danke allen !! Das Problem habe ich in den Griff bekommen, es musste nur die Option -depth mit angegeben werden (hinter find . )!! Jetzt funktioniert es auch ohne Fehlermeldung.
     
  12. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  13. #11 Wolfgang, 20.10.2005
    Zuletzt bearbeitet: 20.10.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Sach ich doch :D
    *gg*

    Trotzdem ist die Variante mit xargs besser, da du Probleme bekommst, wenn in den Ordnernamen z.B. Leerzeichen vorkommen.
    Das geht aber mit der
    find ...-print0|xargs -0 -n1 mv {} /somwhere

    Gruß Wolfgang
     
  14. #12 Schlaubi_fi.de, 20.10.2005
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    ...oder wie bereits angesprochen die Argumentenliste zu lang ist :rtfm:
     
Thema:

Move Problem

Die Seite wird geladen...

Move Problem - Ähnliche Themen

  1. yum install remove --purge

    yum install remove --purge: Hallo zur Zeit habe ich Ubuntu 16.04.1 Host und Centos Gast in Virtualbox. Von Ubuntu bin ich es gewöhnt mittels sudo apt-get install remove...
  2. Umleiten von apt-get autormove in Datei

    Umleiten von apt-get autormove in Datei: Hallo Kann man die Dateien, die man bei apt-get autoremove erhält in eine Datei speichern ? Da haben sich bei mir sagenhafte 411 Dateien...
  3. easytag-2.1.6 HTTP/1.1 301 Moved Permanently

    easytag-2.1.6 HTTP/1.1 301 Moved Permanently: Hallo Seit kurzem bekomme ich bei der manuellen CDDB-Abfrage häufig die AntwortDer Server hat eine falsche Antwort gegeben! (HTTP/1.1 301 Moved...
  4. apt-get autoremove *argh*

    apt-get autoremove *argh*: Hallo Unixboard, habe mal den Befehl "sudo apt-get autoremove" in meine Ubuntu8.10er Maschiene reingehauen und muss feststellen, dass jetzt...
  5. Moved: Vorschlag Sichere Installer für ATI-Driver und NVIDIA und anderen

    Moved: Vorschlag Sichere Installer für ATI-Driver und NVIDIA und anderen: Hallo lieben Pingunien-Benutzern :brav: Warum sage ich euch Pingunen zu nennen? Weil wir mit Linux / Unix benutzen. Aber ich denke, das es...