Come posso correggere gli alias falliti?

7

Ho avuto due dischi rigidi esterni: esterno e backup. Esterno aveva molti alias che indicavano altri file sullo stesso disco. Il backup è stato utilizzato per il backup esterno.

Esterno fallito, e ora utilizzo Backup, che ho rinominato in Esterno. Sfortunatamente, tutti questi alias puntano ora a /Volumes/Backup/… e quindi non funzionano più.

Non voglio doverli risolvere o ricrearli uno alla volta.

C'è un modo per correggere tutti gli alias in modo che puntino a /Volumes/External/… anziché /Volumes/Backup/… ?

    
posta mouviciel 27.09.2010 - 20:59
fonte

4 risposte

3

Ecco il mio tentativo di risolvere questo problema con Applescript. Il seguente applescript acquisirà alias selezionati nel Finder e tenterà di ricollegarli al nuovo percorso sostituendo Backup con External nel percorso POSIX.

Speriamo sia semplice. Probabilmente potresti renderlo ricorsivo per cercare gli alias nelle cartelle selezionate, ma è più lavoro di quanto mi interessi fare - e poi c'è il problema di gestire gli alias nelle cartelle. Le cose potrebbero diventare disordinate. ; -)

Spero che ti aiuti.

tell application "Finder"
    set these_items to the selection
end tell

repeat with i from 1 to the count of these_items
    set this_item to (item i of these_items) as alias
    set this_info to info for this_item

    if class of this_item is alias then
        tell application "Finder"
            set original_file to original item of this_item
            set this_alias_file_name to displayed name of this_item
            set container_folder to container of this_item

            set the_path to the POSIX path of (original_file as alias)
            set new_path to my replaceText("/Backup/", "/External/", the_path)

            move this_item to trash
            try
                make new alias file at container_folder to (POSIX file new_path) with properties {name:this_alias_file_name}
            on error errMsg number errorNumber
                if errorNumber is -10000 then -- new original file not found, try relinking to old
                    try
                        make new alias file at container_folder to (POSIX file the_path) with properties {name:this_alias_file_name}
                    on error errMsg number errorNumber
                        if errorNumber is -10000 then -- old original not found. link's dead Jim
                            display dialog "The original file for alias " & this_alias_file_name & " was not found."
                        else
                            display dialog "An unknown error occurred:  " & errorNumber as text
                        end if
                    end try
                else
                    display dialog "An unknown error occurred:  " & errorNumber as text
                end if
            end try
        end tell
    end if
end repeat

on replaceText(find, replace, subject)
    set prevTIDs to text item delimiters of AppleScript
    set text item delimiters of AppleScript to find
    set subject to text items of subject

    set text item delimiters of AppleScript to replace
    set subject to "" & subject
    set text item delimiters of AppleScript to prevTIDs

    return subject
end replaceText
    
risposta data 30.09.2010 - 19:41
fonte
2

Denominare il disco su Backup? Seriamente, penso che sarebbe il modo più veloce per risolvere il problema. Oppure puoi scrivere uno script di shell che trova ricorsivamente tutti gli alias che puntano il volume "Backup" e ricrearli per puntare al nuovo nome ...

modifica

Controlla link , in particolare mkalias.

    
risposta data 28.09.2010 - 02:25
fonte
1

Recentemente ho dovuto risolvere lo stesso problema e ha scritto questo codice rubino per correggere tutti gli alias in modo ricorsivo .

Lo incollerò qui:

#!/usr/bin/ruby

# these are the folders containing all your images
if ARGV.size == 2
  dir_base     = ARGV[0]
  alias_folder = ARGV[1]
else
  puts "usage $0 dir_with_all_files sub_dir_containing_broken_aliases"
  puts "  or pass -d to use defaults:  ~/img  background"
  if ARGV[0] && ARGV[0] == '-d'
    dir_base     = File.expand_path '~/img'
    alias_folder = 'background'
  end
end

# list of all alias file paths, dirs excluded
alist = Dir.glob("#{dir_base}/#{alias_folder}/**/*").
            select{|w| w.scan('.').any? }

# a list of all file paths, alias fodler contents excluded
flist = Dir.glob("#{dir_base}/**/*").
            reject{|w| w.scan("#{dir_base}/#{alias_folder}").any? }

# forcably create new aliases by overwriting old files
alist.each do |f| 
  flist.each do |w| 
    'ln -fs #{w.gsub(' ','\ ')} #{f.gsub(' ','\ ')}' if w.split('/').last == f.split('/').last
    puts "linked #{w.gsub(' ','\ ')}  to  #{f.gsub(' ','\ ')}"
  end
end
    
risposta data 24.03.2013 - 09:44
fonte
0

Il suo problema non è con il nome "Backup". Lo stesso accade a me con il menu contestuale "Confronta file" (penso che sia il problema) e sicuramente con i file aperti da DreamWeaver. C'è stato qualche cambiamento / correzione in OS Apple perché DW tenta di aprire lo stesso file in Chrome senza "Volume" prima del nome della partizione, e lo stesso file aperto in Chrome rivela "Volume" che funziona.

Quindi Adobe o Apple hanno apportato una modifica o hanno apportato una correzione al modo in cui indirizzano / chiamano una partizione diversa dal disco di avvio nella stessa unità.

Quindi nel caso OP, il nome del disco è il backup. Il problema è che gli alias hanno aggiunto "Volume". Penso che a un certo punto il disco di avvio non intendesse includere "Volumi" e in seguito lo hanno risolto per il Finder e altri luoghi ovvi ma non hanno ancora raggiunto gli alias.

    
risposta data 01.02.2012 - 12:54
fonte

Leggi altre domande sui tag