Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Problem mit cp und "Argument list too lon

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Problem mit cp und "Argument list too lon

    Hallo,

    ich bin leider kein Linux Pro, daher brauche ich mal eure Hilfe.
    Ich will eine große (...) Anzahl von Dateien aus einem Verzeichnis in das andere kopieren.
    Der Befehl dafür sieht ungefähr wie folgt aus:
    Code:
    cp db_files/test/images/*.* db_files/gepackt/test/programm/html/iip/images/'
    Es sollen also einfach alle Dateien von a nach b kopiert werden.
    Das Problem ist nur, dass in dem Verzeichnis mehrere tausend Dateien stehen, so das mir die shell nur sagt "Argument list too long".
    Wo das Problem liegt, ist mir mittlerweile klar (Wildcards werden in der Shell aufgelöst und dadurch wird die Shell-Zeile zu lang).
    Ich bin auch soweit, dass ich mir denke, dass ich irgendwie mit pipe und mehreren Kommandos wie xargs o.ä. das ganze aufteilen muss.
    Nur leider komme ich nicht auf die richtige Kombination der Befehle.
    Wenn ich mit xargs den Input in Blöcke aufteile, wie leite ich denn dann diese Blöcke an cp weiter, so dass cp diese als Source für die zu kopierenden Dateien akzeptiert?

    Konnte ich mich verständlich ausdrücken?
    Bin auch für jede Hilfe dankbar!! (fertige Befehle oder auch nur hinweise...)

    DANKE!


  • #2
    cp db_files/test/images/* db_files/gepackt/test/programm/html/iip/images/

    Kommentar


    • #3
      cp -a db_files/test/images/* db_files/gepackt/test/programm/html/iip/images/

      ^^^^

      Kommentar


      • #4
        Hm... danke für die schnellen Antworten.
        Man merkt, ich komme eher aus der DOS - Welt (*.*).
        Aber mein Problem lösen eure Antworten nicht.
        Wenn ich *.* durch * ersetze (und auch noch ein -a hinzufüge) werden es ja nicht weniger Dateien und ich bekomme noch immer die Meldung "Argument List too long".

        Oder habe ich was übersehen / falsch verstanden?
        Schon mal wieder Vielen Dank!

        Kommentar


        • #5
          so vieeleicht?

          cp -a ./db_files/test/images/* ./db_files/gepackt/test/programm/html/iip/images/

          Kommentar


          • #6
            versuchs mal so:
            1) geh mit der Shell in dein Verzeichnis
            2) tippe in die Shell (mit Zeilenumbruch, nicht wundern, dass dann auf einmal ">" steht):
            for file in * [Return]
            do [Return]
            cp $file /hier/soll/die/datei/hin/$file [Return]
            done [Return]

            vllt. funtkioniert es ja

            Gruß,
            Jojo

            Kommentar


            • #7
              Danke Jojo... einer, der mein Problem verstanden hat.

              ich werde das mal ausprobieren, bin mir allerdings nicht ganz sicher, ob es mich weiterbringt, das ich den Befehl aus PHP heraus aufrufe (mit exec()).
              Aber ich werde das zumindest auf der Konsole mal ausprobieren.
              THX

              Kommentar


              • #8
                am einfachsten wäre wohl
                cp -a db_files/test/images db_files/gepackt/test/programm/html/iip/
                Das sollte das komplette Verzeichnis kopieren, ohne dass die Shell jeden einzelnen Dateinamen übergeben muss, die wird sich cp dann selber suchen, was das Problem lösen sollte.

                Alternativ liesse sich da was mit "find" basteln, also Du lässt find jede einzelne Datei finden, und alle gefundenen Dateien einzeln über -exec (Parameter von find) kopieren.
                mod = master of disaster

                Kommentar


                • #9
                  Danke Waq... ich werde das zuhause testen.

                  Kommentar


                  • #10
                    Wunderbar... wie einfach manche L�sungen sind.
                    Statt alle Dateien zu kopieren, einfach das ganze Verzeichnis kopieren.
                    THX @ Waq --> hat funktioniert

                    Manchmal habe ich auch ein Brett vorm Kopf

                    Kommentar

                    Lädt...
                    X