Viele Ordner zusammenfassen + viele Dateien erzeugen

Hinweis: In dem Thema Viele Ordner zusammenfassen + viele Dateien erzeugen gibt es 31 Antworten auf 4 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Mit welchem Befehl klappt das?

    das klappt mit Sicherheit mit dem Befehl

    Code
    mv /musik/*/* /musik


    die Dateizahl ist so klein, dass es keine Probleme gib. Ärger könnte es nur geben bei identischen Dateinamen aber das siehst du dann. Daten sind nicht weg.

    Wie kann ich evtl. solche eine Situation vorher testen? Ich möchte meine Daten nicht verlieren.

    indem du einen USB-Stick mit ext4 formatierst und darauf einen Ordner mit einigen Unterordnern anlegst. Da drin fabrizierst du einen Haufen Leerdateien. Die Gesamtzahl der Dateien ist begrenzt durch die Zahl der Inodes, die du mit

    Code
    df -i

    feststellen kannst
    Dann kannst du darauf rumtoben wie du möchtest.

    There's no place like 127.0.0.1

    Für den Inhalt des Beitrages 103895 haftet ausdrücklich der jeweilige Autor: wurzel99

  • Und wenn diese "Netzwerkpartition" gar nicht mit extX formatiert ist?


    Gott sei Dank bin ich ja nicht gefragt.
    Muss ich auch keine vernünftige Antwort schreiben.

  • Das Verschieben habe ich erst mal zurückgestellt.


    zunächst einmal üben:

    indem du einen USB-Stick mit ext4 formatierst und darauf einen Ordner mit einigen Unterordnern anlegst. Da drin fabrizierst du einen Haufen Leerdateien. Die Gesamtzahl der Dateien ist begrenzt durch die Zahl der Inodes, die du mit

    Gute Idee. Daran hatte ich auch schon gedacht. Daher kam auch meine Thread-Überschrift.
    Es ist ein 8-GB-Stick.
    df -i sagt mir, dass dort knapp 490.000 Inodes sind, die fast alle unused sind
    df zeigt auch einen leeren Stick an (7,5 Mio Blocks)


    Wie erzeuge ich jetzt die Dateien?

    Einmal editiert, zuletzt von neuland ()

    Für den Inhalt des Beitrages 103898 haftet ausdrücklich der jeweilige Autor: neuland

  • Es ist ein 8-GB-Stick.
    df -i sagt mir, dass dort knapp 490.000 Inodes sind, die fast alle unused sind
    df zeigt auch einen leeren Stick an (7,5 Mio Blocks)

    nächstes Mal bitte die Ausgaben in Code-Tags

    Wie erzeuge ich jetzt die Dateien?

    einen schönen Wettstreit zu diesem Thema findest du hier:
    Shell Script zum erstellen und benennen von mehreren Dateien


    Freie Auswahl. Ich bevorzuge den 'kürzesten' Vorschlag.

    There's no place like 127.0.0.1

    Für den Inhalt des Beitrages 103901 haftet ausdrücklich der jeweilige Autor: wurzel99

  • Ich bevorzuge den 'kürzesten' Vorschlag.

    ich auch .. ich habe


    Zitat

    touch {0..10}.txt

    etwas erweitert, damit die Dateien sich nicht nur in Ziffern unterscheiden
    Es klapp auch teilweise - aber nur teilweise ..


    Code
    linux-xyz:/srv/test/ordner1 # ls
    uvz1  uvz2  uvz3
    linux-xyz:/srv/test/ordner1 # touch uvz1/dateia{1..100000}.txt
    linux-xyz:/srv/test/ordner1 # touch /srv/test/ordner1/uvz2/dateib{1..100000}.txt
    -bash: /usr/bin/touch: Argument list too long

    also .. das 1. Mal 100.000 Dateien klappt, das 2 Mal nicht. Mit dem 'Argument list too long' kann ich nichts anfangen. Ich hab es bei Google probiert aber ich werde nicht schlau daraus.

    Für den Inhalt des Beitrages 103907 haftet ausdrücklich der jeweilige Autor: neuland

  • Deine Kommandozeile ist zu kurz für das Kommando.
    Sie überschreitet getconf ARG_MAX Zeichen.


    Einfach kürzer machen.
    xargs könnte das.
    Für dich dürfte es einfacher sein, die Permutation zu splitten.


    Wurzel kennt bestimmt auch eine sehr kurze Lösung.
    Frag ihn mal.
    Ich dürfte hier ja eh nicht antworten.

  • Mit dem 'Argument list too long' kann ich nichts anfangen.

    aber ich!


    bei der Konsolen-Eingabe in der Bash werden die Wildcards expandiert.


    das heißt: aus rm *.txt wird rm datei1.txt + datei2.txt +datei3.txt usw usw usw ..
    wenn dann diese Argumentliste mit Dateinamen zu lang ist reicht der interne Speicher des Bash-Befehls nicht aus und diese Fehlermeldung kommt


    aus rm /srv/test/ordner1/xyz/* wird dann rm /srv/test/ordner1/xyz/datei1.txt +/srv/test/ordner1/xyz/datei2.txt + /srv/test/ordner1/xyz/datei3.txt


    Platz ist schneller weg ..


    halte dich kurz !

    Für den Inhalt des Beitrages 103909 haftet ausdrücklich der jeweilige Autor: senior53

  • Themaverfehlung.


    Es hat absolut nichts mit der Dateinamensexpansion, dem sogenannten Globbing zu tun.
    Wenn der Senior53 vorher genau lesen würde, wäre ihm aufgefallen, dass in der Kommandozeile gar kein Gobbing vorkommt.
    Es steht kein Stern drin. Nirgends.


    Und die Argumentzeile ist eben kein "interner Speicher" !!!
    Explizit und per definitionem nicht!!!
    Das ist wohl die Datenstruktur in Linuces, der an "Öffentlichkeit" keine zweite gleich kommt.
    Diese Erklärung ist schlicht falsch und zeugt von nur sehr schemenhaften Wissen um die Shell.


    Es handelt sich hier um eine Rangexpansion.


    Das einzige, was daran stimmt, ist das längst gesagte: Die Zeile ist mit dieser Expansion überfordert, weil die Maximallänge überschritten wird.
    Die beiden Wege, das in den Griff zu bekommen, wurden auch schon genannt.

  • halte dich kurz !

    ich habe es verstanden .. sehr plastisch!


    100.000 Dateien pro Ordner reichen mir. also werde ich den touch-Befehl jeweils in Kurzform eingeben. Alles schon passiert.
    Fast alle Inodes sind weg. Der Stick ist trotzdem leer.


    Das heißt jetzt: Für mv werde ich mich auch mit Expansion beschäftigen (bzw den Auswirkungen) .. ich bemühe mal Google. Ich habe jetzt schon genug fremdes Gehirnschmalz angezapft.

    2 Mal editiert, zuletzt von neuland ()

    Für den Inhalt des Beitrages 103911 haftet ausdrücklich der jeweilige Autor: neuland