Vuelva a crear un alias con el mismo nombre y marca de tiempo mediante programación

1

Permítanos desarrollar una utilidad para procesar por lotes archivos de alias heredados.

Implementado como:

  • Servicio de archivos del buscador,
  • Flujo de trabajo de Automator,
  • Applescript,
  • Shellscript,
  • o cualquier otra cosa que sea el trabajo.

Por cada archivo en el lote, esto debe hacerse:

  1. ¿Es el archivo un alias? (evite otros tipos de archivos proporcionados por error de usuario)
  2. Obtenga su ruta de archivo, nombre de archivo, marca de tiempo, etiqueta, etiquetas.
  3. eliminarlo.
  4. Vuélvalo a crear en la ruta de archivo original con el nombre de archivo, la marca de tiempo, la etiqueta y las etiquetas determinados.

Seguimiento: presenté un informe de error a Apple, ver más abajo. Quizás a Apple se le ocurra una solución. Pero creo que algunos AppleScripter (s) expertos aquí pueden encontrar una solución en cuestión de minutos. Sería genial si encontráramos una solución aquí y la ofreciéramos a toda la comunidad macOS.

Informe de error a Apple, presentado el 2017-01-10

Finder / HFS + / filesystem: actualización de archivos de alias heredados para reducir el tamaño del archivo con proceso por lotes

UN ERROR DE LARGA DURACIÓN FUE LUCKILY FIXED:

En macOS Sierra, el tamaño del archivo de los alias finalmente se redujo drásticamente, desde múltiples megabytes en sistemas Mac OS X 10.7-10.11 hasta aproximadamente 1 KB ahora en macOS Sierra 10.12. (Simplemente al no incluir los recursos de los íconos, que en su mayoría de todos modos son redundantes y son solo una copia de un ícono de tipo de archivo genérico).

POR FAVOR, OFRECE UN ARREGLO PARA EL ERROR DEL ERROR TAMBIÉN:

Dependiendo de cuánto se usen los alias en un sistema, existe la posibilidad de guardar varios GB para algunos usuarios.

Le propongo a Apple ofrecer un proceso por lotes para reducir el tamaño del archivo de los archivos de alias heredados. Con una opción para conservar las marcas de tiempo originales de los alias, ya que pueden tener un valor de información crítica en algunos casos de uso.

Luego, puede realizar una búsqueda sencilla en el Finder, seleccionar los archivos que más le gusten (todos o solo algunos) y luego arrastrarlos a la aplicación de proceso por lotes o al comando del menú Finder.

EL TRABAJO ACTUAL CON QUICKLOOK SOLO FUNCIONA PARCIALMENTE

  1. Buscador > Nueva ventana (cmd-N) > Búsqueda (cmd-F)
  2. Aparecen los criterios de búsqueda, configúralos de la siguiente manera:
    • "Tipo" es "Otro", escriba "Alias"
    • Obtienes una ventana de resultados de búsqueda del Finder.
  3. Ver como lista y ordenar por tamaño.
    • Luego tienes a los principales culpables de tamaño de archivo en la parte superior.
  4. Si realiza una búsqueda rápida de un archivo a través de la tecla ESPACIO, no se produce una recreación de alias.
  5. Emita "Archivo > Mostrar original" (cmd-R) en el archivo seleccionado.
  6. En la ventana recién abierta, ve rápidamente los archivos de alias con SPACE.

Luego, ciertos archivos de alias se recrean. ¡Pero no todos!

Funciona, pero solo algunas veces: PDF, JPEG, ZIP si el complemento BetterZip QuickLook es el controlador.

Fuera de estos no todos los alias se actualizan.

Parece que también depende de la aplicación asociada global o individual del archivo (configuración "Abrir con" del Finder, Identificador de tipo uniforme (UTI), bifurcación de recursos de TIPO / CREADOR) y qué complemento QuickLook maneja el tipo de archivo.

Un archivo recreado tiene un tamaño de archivo drásticamente reducido (alrededor de 1 KB). Lamentablemente, pierde su marca de tiempo original, pero obtiene la actual (equivalente a / usr / bin / touch). Me encantaría mantener el alias timestamp preservado.

    
pregunta porg 19.01.2017 - 11:48

1 respuesta

2

Crear un servicio con Automator - Probado en macOS Sierra

  1. Abrir /Applications/Automator.app
  2. Archivo > Nuevo (cmd-N)
    • Elija un tipo de documento: "Servicio".
  3. El servicio recibe seleccionados: "archivos o carpetas" en "Finder".
  4. En el panel izquierdo navega a: Acciones > Biblioteca > Utilidades > Ejecute AppleScript.
    • Arrastre el elemento "Ejecutar AppleScript" desde el panel de la biblioteca a la izquierda hasta el panel del código fuente a la derecha.
  5. Borra completamente el contenido precargado. Pega el siguiente código fuente:

Código fuente de AppleScript

use framework "Foundation" -- Cocoa-AppleScript

on run {input, parameters}
    repeat with thisItem in input
        tell application "Finder"
            if kind of thisItem is "Alias" then -- alias file only
                set parentPath to container of thisItem -- get the folder of this alias
                set {label index:l, comment:c, modification date:m, creation date:cr, original item:origPath, name:n} to properties of (item thisItem)
                if origPath is not missing value then -- not a breaking alias
                    set tagsList to (my tagsFor:(POSIX path of thisItem)) -- get the tags of the alias file (call an AppleScriptObjC handler)
                    delete thisItem -- move this alias to the trash

                    -- ** create an alias file **
                    set newAliasFile to make new alias at parentPath to origPath with properties {comment:c, creation date:cr, original item:origPath, name:n}
                    -- ** set the label ** (0 = no label)
                    if l is not 0 then set label index of newAliasFile to l
                    -- ** set  the tags ** ({} = no tag) 
                    if tagsList is not {} then (my setTags:tagsList forPath:(POSIX path of (newAliasFile as string))) -- call an AppleScriptObjC handler
                    -- ** change the modification date **
                    set modification date of newAliasFile to m
                end if
            end if
        end tell
    end repeat
end run

on tagsFor:posixPath -- Cocoa-AppleScript handler 
    set fileURL to current application's |NSURL|'s fileURLWithPath:posixPath
    set {theResult, theTags} to fileURL's getResourceValue:(reference) forKey:(current application's NSURLTagNamesKey) |error|:(missing value)
    if theTags = missing value then return {} -- no tags
    return theTags as list
end tagsFor:

on setTags:tagList forPath:posixPath -- Cocoa-AppleScript handler
    set fileURL to current application's |NSURL|'s fileURLWithPath:posixPath
    fileURL's setResourceValue:tagList forKey:(current application's NSURLTagNamesKey) |error|:(missing value)
end setTags:forPath:
  1. Archivo > Guardar (cmd-S): Asígnele un nombre como "Recreación de alias".
  2. Abrir preferencias del sistema > Teclado > Accesos directos > Servicios > Archivos y carpetas > Alias recreación, o como lo llames.
    • Asígnele un acceso directo. Como cmd-L se usa para crear un alias (L como en "enlace"), le asigné cmd-alt-ctrl-L.
  3. Seleccione uno o varios archivos de alias heredados y procesarlos.
    • Con su acceso directo cmd-alt-ctrl-L.
    • o mediante el menú principal: Finder > Servicios > Archivos y carpetas > Alias de recreación.

Nota : el proceso por lotes es muy transparente y los errores se pueden corregir. Los alias eliminados se mueven a su Papelera. Si ha cometido un error, elija el archivo de alias trashed en cuestión y ejecute Finder > Poner atrás (cmd-backspace). Esto devolverá el archivo a su carpeta principal anterior y abrirá la carpeta principal en una nueva ventana. Luego tiene el alias recreado y el alias original con el sufijo "copiar" uno al lado del otro y puede hacer correcciones si es necesario.

    
respondido por el jackjr300 27.01.2017 - 20:34

Lea otras preguntas en las etiquetas