Warum klappt cp -R [verz1]/*.mp3 [verz2] nicht?

  • Hi
    Ich oute mich mal Linux-Depp;
    Ich hab auf meiner Platte [verz1] in dem jede Menge Unterverzeichnisse sind in denen mp3 liegen; leider auch andere Dateien die ich nicht haben will.
    wenn ich jetz versuche mit cp -R [verz1]/*.mp3 [verz2] zu kopieren bekomme ich nur ne Fehlermeldung "Aufruf von stat nicht möglich Datei oder Verzeichniss nicht gefunden".
    Was mach ich falsch?
    Gruß


    Wolle

  • Hallo Wolle,


    Zitat

    Original von plautze
    ...
    Was mach ich falsch?


    das "*.mp3" wird beim Aufruf von cp schon durch die im Verzeichniss vorhanden Dateien mit ...mp3 ersetzt. Und in diesem Verzeichniss hast Du halt keine Dateien zu kopieren.


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • Hallo Wolle,


    so sollte es gehen:

    Code
    IFS=$'\n'; cd [Verz1]; for i in $(find . -name "*.mp3"); do mkdir -p "[Verz2]/${i%/*}"; cp "$i" "[Verz2]/$i"; done


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

    2 Mal editiert, zuletzt von HFlor ()

  • Wenn Du nur die mp3 Dateien willst, würde ich folgendes machen:


    zuerst verz1 komplett kopieren:
    cp -rfdp verz1 verz2
    dann alle nicht mp3 Dateien aus verz2 löschen:
    find verz2 -type f -not -name "*.mp3" -exec rm \{\} \;


    Ist zumindest eine Möglichkeit.


    Uli

  • Ums klar zu verstehen:


    Es gibt zwei Verzeichnisse: verz1 und verz2 auf gleicher Ebene ($PWD).
    Aus dem verz1 sollen alle mp3-Dateien in verz2 kopiert werden?


    Dann haette ich folgendes vorgeschlagen (macht aber auch nicht viel anderes als das Script von HFlor):

    Zitat


    mkdir -p [verz2]
    cd [verz2]
    find . --maxdepth 0 -name "*mp3" -print0 | xargs -n1 -0 -i@ cp "@" ../[verz2]/"@"


    Hab's nicht ausprobiert aber sollte folgendes machen:
    * Verzeichnis2 anlegen
    * ins Verzeichnis1 gehen (damit wir spaeter das nicht als Prefix haben)
    * alle mp3s auf aktueller Verzeichnistiefe suchen und jedes einzeln nach Verzeichnis2 kopieren. Trenner ist \0 (damit auch Dateien mit Leerzeichen funktionieren) - oder so aehnlich.


    uwe

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

  • Zitat

    Originally posted by ufauser
    Wenn Du nur die mp3 Dateien willst, würde ich folgendes machen:


    Das wollte ich auch erst vorschlagen, aber je nachdem wieviel mp3 und wieviel anderer Kram ist - nachdem die Kiste ja nun schon am kopieren ist, wohl fürs nächste Mal ;) Eine Lösung wäre


    rsync -avz --include "*/" --include "*.mp3" --exclude "*" verz1 verz2


    (edit: das z kann man sich lokal natürlich sparen ;)


    Oder halt mit find die Liste der mp3 generieren wie in HFlors Vorschlag (in ein tmpfile) und dann rsync mit --files-from tmpfile.

  • Hallo,


    da sieht man es wieder, es führen (zu) viele Wege nach Rom.


    Warum geht eigentlich das einfache

    Code
    cp -R "[Quelle/]*.mp3" Ziel

    nicht, selbst tar bot keine möglichkeit für ein include-pattern ...


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!