geplaatst door: Kinetic One
Hallo,

Een tijd geleden heeft iTunes m'n filestructuur om zeep geholpen.
Te laat gemerkt en het resultaat is dat ik nu opnieuw ben begonnen met rippen en importeren.
Gelukkig heb ik op oude schijven nog bepaalde back-ups,
maar de folderstructuur daar is niet noodzakelijk dezelfde als in de nieuwe iTunes media map.

Vraag:
Met welke tool of welk exact commando in de terminal kan ik zoals in het voorbeeld zoeken of files van map 'b' ergens al dan niet aanwezig zijn in map 'a' en die files ergens in een extra map kopiëren.
In het voorbeeld zou dan enkel de file "Don't pence me in.mp3" moeten geselecteerd worden, maar de file "Here comes your" man niet omdat deze reeds bestaat in a.

Graag concrete hulp. Testen met sommige compare tools zoals rsync,deltawalker, twofolders, etc zijn tot nu toe teleurstellend geweest.

Alvast bedankt

Gezocht: manier om files recursief te vergelijken
9 december 2014 - 18:10    reactie #1
geplaatst door: Pieterr
Ik ga iets zeggen wat je misschien niet wilt horen: je bent verkeerd bezig.  :smile:

Je kunt het beheer van de bestandsnamen veel beter aan iTunes overlaten en niet zelf met bestandsnamen gaan klooien. Dus gewoon je liedjes importeren in iTunes en iTunes laten uitzoeken onder welke naam het bestand wordt weggezet op je schijf.

"One experiment is worth a thousand expert opinions."
Gezocht: manier om files recursief te vergelijken
10 december 2014 - 14:38    reactie #2
geplaatst door: Godfather
Mijn manier zou zijn om alle bestanden, dubbel of niet, in een nieuwe iTunes bibliotheek te gooien waarbij je inderdaad iTunes laat sorteren en archiveren. Gewoon de default instellingen dus.
Daarna kun je heel eenvoudig binnen iTunes en dus niet in de Finder ontdubbelen. Een pokken klus, ik weet het, maar dat zou ik doen.
Mac Pro '08 - iPad 16GB - iPhone 6 - Next Gen MB Pro
Gezocht: manier om files recursief te vergelijken
10 december 2014 - 21:11    reactie #3
geplaatst door: Jamo
Ik heb en scriptje geschreven die doet wat je wilt weten. Je moet wel met de Terminal overweg kunnen. Dit is het script:


#!/bin/sh
#
BRON=$1
TARGET=$2
FOLDER=$3
#
# ... Maak lijst van de bron (waarmee vergeleken wordt)
#
if [ ! -d ${BRON} ]
then
 echo "Bron-map \"${BRON}\" bestaat niet!"
 exit 1
fi
if [ ! -d ${TARGET} ]
then
 echo "Doorzoek-map \"${TARGET}\" bestaat niet!"
 exit 1
fi
if [ ! -d ${FOLDER} ]
then
 echo "Doel-map \"${FOLDER}\" bestaat niet!"
 exit 1
fi
echo "Maak lijst van bestanden in \"${BRON} ..."
cd "${BRON}"
find . -type f -exec basename {} \; | sort -u > /tmp/bron.lst
echo "Aantal bestanden: `wc -l /tmp/bron.lst`"
#
# ... Maak lijst van de map die onderzocht wordt
#
cd ${TARGET}
find . -type f | sort -u | while read FILE
do
 NAAM=`basename ${FILE}`
 EXIST=`grep ^"${NAAM}" /tmp/bron.lst`  
 if [ "${EXIST}" = "" ]
 then
   echo "Bestand \"${NAAM}\" niet gevonden."
   cp "${FILE}" "${FOLDER}"
 fi
done

Bewaar deze code in een bestandje; naam kan zijn "compare.sh". Daarna een chmod +x compare.sh, zodat je het kan uitvoeren op de CLI.

Opstarten met:

./compare.sh naam_van_map_a naam_van_map_b mapnaam_van_verzameling

bv:

./compare.sh /users/jan/mapA /users/jan/mapB /tmp/uniek

Let op met spaties in de mapnamen. ik kan niet garanderen dat het script daar goed mee omgaat.

Jamo