staging.inyokaproject.org

Verzeichnis nur kopieren, wenn im Zellaufwerk nicht vorhanden

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

kibuntu

Anmeldungsdatum:
20. Oktober 2008

Beiträge: 59

Hi,

ich habe zwei Musiksammlungen. Die Sammlung A enthält nur mp3-Dateien, die Sammlung B überwiegend flac-Dateien, aber auch mp3-Dateien. Die Verzeichnisse der Sammlungen sind gleich strukturiert: Künstler/Album/Lieder. Die meisten Künstler und Alben sind in A und B gleichermaßen vorhanden. In Sammlung A befinden sich aber einige Künstler und Alben, die in B nicht vorhanden sind. Ich möchte nun eigentlich nur die Verzeichnisse mit deren Inhalt von A nach B kopieren, die in B nicht vorhanden sind, weil ich ja nicht alle mp3-Dateien kopieren möchte, die in Sammlung B schon als flac vorhanden sind.

Weder die bekannten Suchmaschinen noch die Suche in diesem Forum haben mir eine Lösung bieten können.

Hat jemand eine Idee, wie ich mein Problem bewerkstelligen kann?

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Hm, das folgende ohne Garantie auf Korrektheit: Angenommen, Du hast die Verzeichnisse A und B als Unterverzeichnisse des gleichen Verzeichnisses. Dann sollte folgendes funktionieren (auch wenn die Lösung nicht wirklich schön ist)

cd A
for i in */*; do 
   test ! -e ../B/"$(dirname $i)/$i" && mkdir -p ../B/"$(dirname $i)" && cp -r "$i" ../B/"$(dirname $i)"; 
done

JensHol

Anmeldungsdatum:
31. Oktober 2017

Beiträge: 324

Ich würde für sowas immer rsync nutzen, zumindest wenn auch Rechte etc. mit übernommen werden sollen:

https://wiki.ubuntuusers.de/rsync/

Das hat einige Funktionen drin, die man einzeln aktivieren und deaktivieren kann.

Sehr interessant zum Beispiel wenn du auf A Metadaten in mp3 aktualisiert hast und die Datei in b zwar da ist aber nicht aktuell 😉

Edit: on und inwieweit du mp3 die als Flac schon vorhanden sind ausklammern kannst, kann ich dir allerdings nicht sagen

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

kibuntu schrieb:

ich habe zwei Musiksammlungen. Die Sammlung A enthält nur mp3-Dateien, die Sammlung B überwiegend flac-Dateien, aber auch mp3-Dateien. Die Verzeichnisse der Sammlungen sind gleich strukturiert: Künstler/Album/Lieder. Die meisten Künstler und Alben sind in A und B gleichermaßen vorhanden. In Sammlung A befinden sich aber einige Künstler und Alben, die in B nicht vorhanden sind. Ich möchte nun eigentlich nur die Verzeichnisse mit deren Inhalt von A nach B kopieren, die in B nicht vorhanden sind, weil ich ja nicht alle mp3-Dateien kopieren möchte, die in Sammlung B schon als flac vorhanden sind.

Hat jemand eine Idee, wie ich mein Problem bewerkstelligen kann?

Klar. Ich meine aber, wir hätte hier schon mal so etwas gehabt. Ich schaue mal, ob ich da was wiederfinde.

JensHol schrieb:

Ich würde für sowas immer rsync nutzen, zumindest wenn auch Rechte etc. mit übernommen werden sollen:

Geht m.W. nicht, weil .flac mit .mp3 verglichen werden soll.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Neu schreiben war einfacher

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh

source=A
target=B

export target="$(readlink -e "$target")"

(
cd "$source" && \
find -type f -iname '*.mp3' -exec sh -c '
  for f; do
    if [ ! -f "$target/$f" -a ! -f "$target/${f%.*}.flac" ]; then
      dir="$target/${f%/*}"
      mkdir -p "$dir"
      cp -av "$f" "$dir"
    fi
  done
' -- {} +
)

kibuntu

(Themenstarter)

Anmeldungsdatum:
20. Oktober 2008

Beiträge: 59

WOW! Das Skript ist perfekt! Macht genau das, was ich gesucht habe!

Vielen herzlichen Dank rklm!

Antworten |