Copy mit Pfad

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von DigmayerM, 09.11.2005.

  1. #1 DigmayerM, 09.11.2005
    DigmayerM

    DigmayerM Grünschnabel

    Dabei seit:
    09.11.2005
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo Script Meisters,
    ich habe hier ein kleines Problem mit einem Copy Befehl und ich hoffe Ihr könnt mir helfen:
    Ich habe mehrere Dateien gleichen Namens in verschieden Pfaden, wie z.B.
    /Pfad1/../directory1/index.txt
    /Pfad2/../directory2/index.txt
    /Pfad3/../directory3/index.txt
    usw.

    Ich möchte nun die Dateien finden die index.txt lauten und mit Pfad in ein anderes Verzeichnis kopieren, sodaß es so aussieht:
    /backup/../directory1/index.txt
    /backup/../directory2/index.txt
    /backup/../directory3/index.txt

    Ich möchte aber dabei noch den ersten Teil des Urprungspfades weglassen und alles was danach kommt mit übernehmen.

    Hat einer von Euch einen Vorschlag?

    Gruß,
    Markus
     
  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 Xanti, 09.11.2005
    Zuletzt bearbeitet: 09.11.2005
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Wenn ich Dich richtig verstehe, willst Du nur die "index.txt" kopieren? Wenn nicht, bitte sagen.

    Auf die Schnelle: Erstelle ein File copy_backup.sh

    Code:
    oldfile="$1"
    newfile=$(echo $oldfile | sed -e "s|$(echo "$oldfile" | cut -d "/" -f2)|backup|")
    mkdir -p "$(dirname "$newfile")"
    cp "$oldfile" "$newfile"
    
    und rufe es mittels

    Code:
    find / -name "index.txt" -exec copy_backup.sh {} \;
    auf.

    Gruss Phorus

    edit: Der Vollständigkeit halber kann die newfile-Zeile auch wie folgt aussehen:

    Code:
    newfile=$(echo $oldfile | perl -pe 's|/?[\w]+|/backup|')
    :D
     
  4. #3 Wolfgang, 09.11.2005
    Zuletzt bearbeitet: 09.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Wenn die Dateien alle ein gemeinsames Wurzelverzeichnis haben,
    und in der selbenen Ebene liegen, und das Verz /backup existiert:

    for i in $(find /quellpath -iname "index.txt");do
    cp $i ${i/quellpath/backup/};
    done


    Stichwort Variablen expansion ;)

    Gruß Wolfgang
    PS wenn der Pfad / enthält sind die entsprechend zu Escapen
    ${i/quell\/path/backup\/unterverz/}

    Edit:
    Falls die Verzeichnisse noch nicht existieren, dann muss halt noch mkdir -p rein.

    for i in $(find /quellpath -iname "index.txt");do \
    if ! [ -d dirname ${i/quellpath/backup/} ]; then \
    mkdir -p $(dirname ${i/quellpath/backup/}); \
    fi;\
    cp $i ${i/quellpath/backup/};\
    done
     
  5. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Wieder was gelernt :)

    Gruss, Phorus
     
  6. #5 DigmayerM, 10.11.2005
    DigmayerM

    DigmayerM Grünschnabel

    Dabei seit:
    09.11.2005
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo,

    danke für die Hilfe, es klappt!

    Gruß,
    DigmayerM
     
  7. #6 Wolfgang, 10.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo @Phorus

    Don' worry, deine Methode ist portabler! ;)

    Wollte nur mal darauf hinweisen, dass es auch hier
    mehrere Methoden gibt.

    Insofern sind meine Beiträge oft nicht als Verbesserung,
    (das maß ich mir nicht an), sondern Ergänzung zu verstehen.

    Unter perl sagt man dazu TIMTOW= there is more then one way

    Was man dann wählt, hängt immer auch von den Bedingungen ab.

    Wenn der wegzuschneidende Path-Prefix allerdings variabel ist,
    versagen erstmal beide Varianten.

    Aber man könnte dann natürlich den zu ersetzenden Teilpfad durch
    ${I%/Pfad/soll/stehen/bleiben/datei} ermitteln und in meiner Variante einsetzen.
    Das ist der einzige Vorteil gegenüber der Methode mit
    cut.
    Mit hässlichen Zeichen (space tab usw.) in Dateinamen, kommen beide Methoden wegen der Art der Verwendung von find latürnich nicht klar.
    Da muss dann wohl eine Kombination mit xargs ran.


    Gruß Wolfgang
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Da dachte ich mir: "...komme ich dem Wolfgang mal zuvor, indem ich Lösungen mit sed, cut und perl anbiete...", und dann kommt doch noch ein anderer Lösungsvorschlag :D
     
  10. #8 Wolfgang, 10.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hehe
    Geht natürlich aus ganz allein mit perl :D
    Aber das war ja hier nicht gefragt gelle?

    Gruß Wolfgang
     
Thema:

Copy mit Pfad

Die Seite wird geladen...

Copy mit Pfad - Ähnliche Themen

  1. Bradley M. Kuhn kündigt Copyright-Projekt mit Debian an

    Bradley M. Kuhn kündigt Copyright-Projekt mit Debian an: Auf der gerade stattfindenden jährlichen Debian-Konferenz DebConf hat Bradley M. Kuhn, Direktor der gemeinnützigen Organisation »Software Freedom...
  2. CopyPaste Problem: Sonderzeichen in die Konsole einfügen

    CopyPaste Problem: Sonderzeichen in die Konsole einfügen: Hallo, ich hatte irgendwann mal ein Befehl gesehen, indem jemand ein Problem hatte, einen sed Einzeiler in die Konsole einzufügen. Gut, das...
  3. Copyleft.org nimmt Betrieb auf

    Copyleft.org nimmt Betrieb auf: Die Software Freedom Conservancy und die Free Software Foundation haben gemeinsam die Webseite Copyleft.org gegründet. Das Hauptprojekt der...
  4. Queue für copy Script

    Queue für copy Script: Queue für copy Script (CentOS 3.5) Hallo liebe Community, ich habe folgende Frage an euch ... Hier mal die Anforderung und die derzeitige...
  5. Wo ist denn K9Copy abgeblieben? KDE4

    Wo ist denn K9Copy abgeblieben? KDE4: Wo ist denn K9Copy abgeblieben? Und was wäre denn eine Alternative, vorzugsweise GUI! sorry! google hat doch noch ausgespuckt, mit dem richtigen...