Alias Liste der neuesten Dateien

Ich habe mal in meiner alten AppleScript-Sammlung etwas gestöbert und bin über ein Skript gestolpert, welches ich vor einer halben Ewigkeit geschrieben haben. Damit lassen sich Ordner auf die neusten Dateien hin durchsuchen und für dieses Dateien werden anschließend erst symbolische Links erstellt. Diese Unix-Links werden dann in OSX Aliase konvertiert und in einen Zielordner bewegt…
Schon strange wenn man Quellcode von vor über 6 Jahren findet… und noch ein kleines Handbuch dazu

–hubionmac.com 07.02.2005

–#################################–Preferences–#################################–

property daycount : 4

property depth_scan_switch : “off” –(on/off)

property dirname_in_aliasname : “off” –(on/off)

–###########################################################################–

global maxfolderdeep, folderkind, destination_folder, current_folder_name, tempfolder

–## Set all working directories

tell application “Finder”

set folderkind to kind of folder 1 of startup disk

try

set aliasfolder to (folder “recent_uploads_aliases” of startup disk) as alias

on error

make new folder at startup disk with properties {name:”recent_uploads_aliases”}

set aliasfolder to (folder “recent_uploads_aliases” of startup disk) as alias

–error “A folder called \”recent_uploads_aliases\” has been created at your startup disk.”

end try

try

set temp_folder to folder “_temp” of aliasfolder as alias

set tempfolder to POSIX path of temp_folder

on error

make new folder at (aliasfolder as alias) with properties {name:”_temp”}

set temp_folder to folder “_temp” of aliasfolder as alias

set tempfolder to POSIX path of temp_folder

end try

set scan_group_folders to every folder of (aliasfolder as alias)

end tell

–## Now scan every folder

repeat with current_scan_group_folder in scan_group_folders

tell application “Finder” to set itemname to name of current_scan_group_folder

if itemname as text ≠ “_temp” then

–## clean the tempdir and the destination folder from aliases and links

tell application “Finder” to set destination_folder to original item of alias file “destination_folder” of current_scan_group_folder

do shell script “rm -f ” & quoted form of (POSIX path of (destination_folder as alias)) & “*”

do shell script “rm -f ” & quoted form of tempfolder & “*”

tell application “Finder” to set the_folders to every alias file of current_scan_group_folder

repeat with the_folder in the_folders

if name of the_folder ≠ “destination_folder” then

tell application “Finder” to set thepath to original item of the_folder

if depth_scan_switch = “on” then

set maxfolderdeep to (character 1 of ((name of the_folder) as text)) as integer

else

set maxfolderdeep to 1

end if

tell application “Finder” to set thefolder to original item of (the_folder as alias)

set current_folder_name to (name of thefolder) as text

make_sym_links(thepath)

end if

end repeat

— ## create aliases of symbolic links at the destination directory

tell application “Finder”

set these_ to every item of temp_folder

repeat with this_ in these_

if dirname_in_aliasname = “on” then

set name_01 to name of container of (original item of this_)

set name_00 to name of (original item of this_)

set aliasname to name_00 & ” @ ” & name_01 as string

make new alias file to ((original item of this_) as alias) with properties {name:aliasname} at destination_folder

else

make new alias file to ((original item of this_) as alias) at destination_folder

end if

end repeat

end tell

end if

end repeat

on make_sym_links(the_folder)

set thepath to POSIX path of (the_folder as alias)

do shell script “find ” & quoted form of thepath & ” -ctime -” & daycount & ” -maxdepth ” & maxfolderdeep & ” -mindepth ” & maxfolderdeep & ” -exec ln -s {} ” & quoted form of tempfolder & ” \\;”

end make_sym_links

4 thoughts on “Alias Liste der neuesten Dateien

  1. fellowweb says:

    Verstehe ich das richtig, dass das Script ideal wäre, um mithilfe von Hazel/Folder Actions bei neuen Dateien in einem Shared Folder von Dropbox einen Alias auf die neue Datei auf den Desktop zu legen?

  2. Hubi says:

    Na ja, ich würde sagen, dass das reine find-Kommando schon ausreicht… Du benötigst ja nicht zwangsläufig Alias-Dateien, OSX versteht sich nämlich prächtig auf symbolische Links.

    Also so etwas in der Art
    – lösche alle symbolischen Links auf dem Schreibtisch
    – durchsuche die DropBox nach allen Dateien, die innerhalb der letzten 24 Stunden geändert wurden….
    find ~/Desktop/ -type l -delete;find ~/Dropbox/ -ctime -1 -type f -not -name ".*" -not -iname "icon*" -exec ln -s {} ~/Desktop/ \;

    Das lässt du einfach alle 1-2 Minuten oder eben als Ordneraktion ablaufen

  3. fellowweb says:

    Danke, Hubertus!

    Um das alles genau zu verstehen, muss ich mir noch ein bisschen Terminal-Wissen aneignen. Dann probiere ich das gern aus. :)

  4. Hubi says:

    In der Tat das ist nie verkehrt… ich erläutere mal:
    find -> sucht dateien
    ~/Desktop/ -> gibt den Pfad an wo gesucht werden soll, in diesem Fall in Deinem Home-Verzeichnis(~) auf dem Schreibtisch
    -type l -> es soll nur nach symbolischen Links gesucht werden
    -delete -> und diese sollen dann auch gleich mal gelöscht werden…
    wenn ich es es mir gerade so überlege wäre vor dem delete noch ein -maxdepth 0 praktisch, damit er nicht rekursiv in alle Unterverzeichnisse schaut sondern nur auf dem Schreibtisch selbst… weiter im Text:
    ; damit trennst Du zwei Befehle, der Befehl nach dem ; wird erst gestartet, wenn der davor beendet wurde
    -ctime -1 -> suche Dateien die innerhalb des letzten Tages erstellt wurden
    -type f -> ja wirklich nur Dateien, keine Ordner
    -note -name ".*" -> nur Dateien die nicht mit einem . beginnen, wie .DS_Store oder andere Dateien, die im Finder eh nicht angezeigt werden.
    -not -iname "icon*" -> und ignoriere auch Dateien die icon heissen, bzw. damit beginnen… die Groß- und Kleinschreibung des Namen spielt damit keine Rolle also icon oder iCON oder sonstwie wird ignoriert
    -exec ln -s {} ~/Desktop \; -> alles was Du findest ({}) nimmst Du und erstellt davon einen symbolischen Link auf dem Schreibtisch

Comments are closed.