BRAUCH HILFE: Unix Programm zum verschieben von Dateien!

Dieses Thema im Forum "Unix Derivate & sonst. Unix Fragen" wurde erstellt von Beheaded, 08.09.2006.

  1. #1 Beheaded, 08.09.2006
    Beheaded

    Beheaded Grünschnabel

    Dabei seit:
    08.09.2006
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo!
    Ich bin Unix-Einsteiger und brauch jetzt ein Programm, welches mir aus einem Ordner alle Dateien (keine Unterverzeichnisse oder Verzeichnisse) in einen anderen Ordner kopiert. Desweiteren soll dies durch eine Schleife Zeilenweise geschehen (damit man immer sieht, welche Datei gerad rauskopiert wird) und der Dateiname einfach durch das Kürzel .txt erweitert werden.
    Kann mir jemand helfen? Bräuchte das bis spätestens Sonntag. :-/
    Ich bin so in Not. Bitte verzweifelt um Hilfe.
     
  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. #2 supersucker, 08.09.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Kuck dir mal

    Code:
    man find
    an.

    Noch ein paar Tips:

    - Die Suchtiefe (also z.b. keine Unterverzeichnisse) kannst du mit maxdepth begrenzen.

    - find kennt den Parameter "exec", damit kannst du z.b. "mv" zum Verschieben und Umbenennen realisieren.

    Probiers mal damit, dann sehen wir weiter.
     
  4. #3 Beheaded, 08.09.2006
    Beheaded

    Beheaded Grünschnabel

    Dabei seit:
    08.09.2006
    Beiträge:
    5
    Zustimmungen:
    0
    Und wie bekomm ich das mit der Schleife hin, das der jede einzeln anzeigt?
    Hab kein blassen schimmer. Hab auch schon in meinen Unterlagen rumgeblättert, aber die Schulung ist schon zu lang her, als das ich mich zurechtfinde.
     
  5. Lumpi

    Lumpi Haudegen

    Dabei seit:
    14.06.2006
    Beiträge:
    663
    Zustimmungen:
    0
    Ort:
    Dessau
    Hallo,

    Hausaufgaben? :devil:
    zum Kopieren verwende den Befehl cp.
    siehe Link
    bei der Geschwindigkeit die heutige Rechner haben, musst du bei einer Ausgabe sehr schnell lesen können.
    Daher ist eine Umleitung auf den Bildschirm nicht sinnvoll.
    Zum Umbenennen den Befehl mv verwenden

    Gruß Lumpi
     
  6. #5 Beheaded, 08.09.2006
    Beheaded

    Beheaded Grünschnabel

    Dabei seit:
    08.09.2006
    Beiträge:
    5
    Zustimmungen:
    0
    Schuldigt den Doppelpost: vielen Dank für die Antwort auf alle Fälle schon mal. Bin für jeden Tipp dankbar.
     
  7. #6 Lumpi, 08.09.2006
    Zuletzt bearbeitet: 08.09.2006
    Lumpi

    Lumpi Haudegen

    Dabei seit:
    14.06.2006
    Beiträge:
    663
    Zustimmungen:
    0
    Ort:
    Dessau
    Hallo,

    sieh mal im Bereich "Shell-Scripte".
    Dort solltest du geügend Hinweise finden.

    Gruß Lumpi

    [EDIT] Nur so als Tipp:
    Bestätige mal deine Mail zur Anmeldung im UNIXBORD. Nur dann haste die volle Zugangsberechtigung zum Board.
     
  8. #7 root1992, 08.09.2006
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Ich rate dir zu einem shellscript. Zum lernen rtfm, rtfw.
    Die Informationen sollten ausreichen um die Aufgabe zu lösen.
     
  9. #8 Beheaded, 08.09.2006
    Beheaded

    Beheaded Grünschnabel

    Dabei seit:
    08.09.2006
    Beiträge:
    5
    Zustimmungen:
    0
    1. Danke für den Tipp.^^
    2. Also ich hab jetzt schon rausgefunden, das ich mv brauche. Logo.
    Wenn ich also eine Datei umbenennen will von dateiname in dateiname.txt, sag ich:
    (Pfad wird vorher eingegeben und dann für alle Dateien verwendet)
    mv $dateiname $pfad+"/"+$dateiname+"txt" ??

    Und als schleife kann ich for nehmen, oder besser while, weil sie ja im falle der ordner leer ist, gar nicht durchlaufen werden muss?!
     
  10. #9 Xanti, 08.09.2006
    Zuletzt bearbeitet: 08.09.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Wenn ich Deinen ersten Post lese, brauchst Du cp und nicht mv. Am naheliegensden wäre:

    Code:
    find ... | while read i; do echo $i; cp "$i" "$pfad/${i}txt"; done
    Für den Fall, dass spezielle Sonderzeichen in den File-/Ordnernamen existieren, müsste noch -print0 | xargs -n1 -0 zwischengeschalten werden.

    Gruss, Xanti

    edit: Ich les gerade, dass im Titel was von Verschieben steht. Muddel Dir selber die Lösung um. ;)
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 Beheaded, 08.09.2006
    Beheaded

    Beheaded Grünschnabel

    Dabei seit:
    08.09.2006
    Beiträge:
    5
    Zustimmungen:
    0
    Nein, ich soll sie verschieben und nicht kopieren. Sorry, versprochen.
    print0 kenn ich nicht. Wie schaltet man das dazwischen und wozu? Bewirkt das einfach, dass Sonderzeichen auch als diese erkannt werden??(

    Allet klar:
    also anstatt cp dann mv.

    EDIT: Vielen Dank nochmal.
     
  13. #11 Xanti, 08.09.2006
    Zuletzt bearbeitet: 08.09.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Mit -print0 gibt find seine Suchergebnisse getrennt durch die ASCII-Null aus. Damit wird gewährleistet, dass im Falle von speziellen Sonderzeichen die Übergabe von find an read funktioniert.

    Ohne -print0 gibt find die gefundenen Files als Liste aus, wobei die einzelnen Listenelemente getrennt durch das Newline (\n) sind. Wenn man aber Files hat, die ein Newline in ihren Namen haben (wer auch immer solche Files anlegt), z.B. "file\nname", interpretiert read dies als mehrere Filenamen und dies ist natürlich falsch. Bei -print0 muss man xargs benutzen, da es mit der ASCII-Null-Trennung umgehen kann.

    Mehr dazu in man find und man xargs.

    Der Befehl würde dann so aussehen:

    Code:
    find ... -print0 | xargs -0 -n1 | while read i; do ...
    
    Gruss, Xanti

    edit: Ich sehe gerade, dass im Fall Newline im Namen das | while read i ... ebenfalls nicht funktionieren würde, dann müsste man mit

    Code:
    find ... -print0 | xargs -0 -n1 -I% cp % ...
    
    arbeiten.
     
Thema:

BRAUCH HILFE: Unix Programm zum verschieben von Dateien!

Die Seite wird geladen...

BRAUCH HILFE: Unix Programm zum verschieben von Dateien! - Ähnliche Themen

  1. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....
  2. Anfänger braucht Hilfe bei DVB-S Installation

    Anfänger braucht Hilfe bei DVB-S Installation: Hallo, ich habe ein Problem. Ich habe openSuse 13.2 frisch installiert. Jetzt soll ein usb-TV-Modul TEVII s660 funktionieren. Ich kann bereits...
  3. Hilfe bei Interpretation des RAM-Speicherverbrauchs

    Hilfe bei Interpretation des RAM-Speicherverbrauchs: Hallo, kann jemand erklären, wie es auf einem Linux-Rechner zu dieser RAM-Ausgabe kommt? Ich meine, es soll ja eigentlich fast der ganze...
  4. Brauche Hilfe bei Lösunge einer Aufgabe

    Brauche Hilfe bei Lösunge einer Aufgabe: In der Dateil /etc/passwd sind zeilenweise alle User aufgelistet. Der Name ist dabei vom Zeilenanfang bis zum ersten Doppelpunkt. Erstellen Sie...
  5. Brauche hilfe bei einen Shell Script "-eq Parameter"

    Brauche hilfe bei einen Shell Script "-eq Parameter": Hallo miteinander, bin Neuling in shell Programmierung und brauche etwas Hilfe: und zwar möchte ich einige Zeilen aus einer Datei "user.db"...