Ordner
Ordner suchen, die nur eine Datei enthalten
19.12.11 10:00 Kategorisiert in: Mac OS X | AppleScript
Dieses kleine AppleScript hilft dabei, alle Ordner aufzulisten, in denen nur eine einzelne Datei enthalten ist. Dies ist z.B. hilfreich, wenn man in der eigenen Musik-Library nach Alben (=Ordner) suchen will, die nur einen Titel enthalten. Das Skript fragt zunächst nach, in welchem Ordner die Suche beginnen soll. Im AppleScript-Editor erhält man dann eine Liste die den vollen Pfad sowie die einzelne Datei enthält:
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Anna Ternheim:Girl Laying Down - EP:", {"02 Little Lies.m4a"},
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Bronski Beat:The Age of Consent:", {"06 Smalltown Boy.m4p"},
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Clueso:So Sehr Dabei:", {"07 Gewinner.mp3"}, "
Voraussetzungen: Mac OS X 10.x (sollte auf so ziemlich allen Versionen laufen, getestet auf Mac OS X 10.7.2)
set a to choose folder -- Benutzer fragen, Ordner auswählen (z.B. iTunes Music:Music)
set {each_Folder, dummy} to {{}, {}} -- zwei leere Listen anlegen
tell application "Finder"
set allFold to every folder of entire contents of folder a
--Liste 'allFold' mit allen Ordnern und Unter-Ordnern füllen
repeat with a_Fold in allFold -- Durch jeden einzelnen Eintrag der Liste gehen
set numberOfFiles to number of files in a_Fold -- Inhalt zählen
if numberOfFiles = 1 then -- Wenn nur eine Datei enthalten ist, ...
set dummy to the name of every file in a_Fold -- … dann den Dateinamen holen ...
set end of each_Folder to {(a_Fold as Unicode text), dummy} & return
-- ... und dann den Pfad zur Datei und den Dateinamen in eine zweite Liste schreiben
end if
set dummy to {} -- Liste 'dummy' leeren für den nächsten Durchlauf
end repeat
end tell
each_Folder -- Ergebnis ausgeben
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Anna Ternheim:Girl Laying Down - EP:", {"02 Little Lies.m4a"},
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Bronski Beat:The Age of Consent:", {"06 Smalltown Boy.m4p"},
{"Macintosh HD:Users:basti:Music:iTunes:iTunes Music:Music:Clueso:So Sehr Dabei:", {"07 Gewinner.mp3"}, "
Voraussetzungen: Mac OS X 10.x (sollte auf so ziemlich allen Versionen laufen, getestet auf Mac OS X 10.7.2)
set a to choose folder -- Benutzer fragen, Ordner auswählen (z.B. iTunes Music:Music)
set {each_Folder, dummy} to {{}, {}} -- zwei leere Listen anlegen
tell application "Finder"
set allFold to every folder of entire contents of folder a
--Liste 'allFold' mit allen Ordnern und Unter-Ordnern füllen
repeat with a_Fold in allFold -- Durch jeden einzelnen Eintrag der Liste gehen
set numberOfFiles to number of files in a_Fold -- Inhalt zählen
if numberOfFiles = 1 then -- Wenn nur eine Datei enthalten ist, ...
set dummy to the name of every file in a_Fold -- … dann den Dateinamen holen ...
set end of each_Folder to {(a_Fold as Unicode text), dummy} & return
-- ... und dann den Pfad zur Datei und den Dateinamen in eine zweite Liste schreiben
end if
set dummy to {} -- Liste 'dummy' leeren für den nächsten Durchlauf
end repeat
end tell
each_Folder -- Ergebnis ausgeben