lsof no muestra todos los archivos abiertos en la aplicación Vista previa

3

Tengo aproximadamente 43 archivos abiertos en la vista previa, sin embargo, cuando ejecuto lsof -c Preview , solo obtengo una fracción de los (es decir, 8 archivos) que están abiertos actualmente.

Esta es la misma salida que obtengo al usar el Monitor de actividad, pero me gustaría guardar la lista completa de archivos abiertos para poder volver a abrir esta lista de archivos más adelante.

He encontrado algunos consejos sobre cómo recuperar la lista de archivos abiertos en este enlace .

¿Alguien tiene una pista de lo que puede estar pasando? Otra solución que sería útil es recuperar la lista de archivos que se abrieron en la última sección de Vista previa.

EDITAR:

Como comentó D. A. Vincent, es posible que los archivos se cierren después de cargarlos en la memoria. Si es posible hacer un observador de los archivos abiertos por vista previa y registrarlos en un archivo, esta también sería una solución adecuada. Especialmente si este hilo de observador podría iniciarse cuando se inicia el inicio de sesión del usuario o el sistema operativo.

    
pregunta Werner 09.05.2017 - 01:59

1 respuesta

4

Aquí hay una solución de AppleScript. Esto debería proporcionarle una lista completa de archivos abiertos (incluida la ruta completa) en la aplicación de vista previa.

Además, si algún gurú de AppleScript encuentra esta respuesta, le agradecería cualquier crítica constructiva que pueda ofrecer. :)

set text item delimiters to "\n"
set myList to {}
tell application "Preview"
    set theDocs to get documents
    repeat with eachDoc in theDocs
        set thePath to path of eachDoc
        copy thePath to end of myList
    end repeat
end tell
set the_list to myList as text
tell application "Finder"
    set myFile to "/Users/YourName/YourFolder/FileName.txt"
    do shell script "date >> " & myFile
    do shell script "echo " & quoted form of the_list & " >> " & myFile
end tell

Esto imprimirá la fecha actual seguida de una lista de todos los documentos abiertos en Vista previa. Si prefiere omitir la fecha, simplemente elimine la línea:

do shell script "date >> " & myFile

Asegúrese de completar la información correcta en la línea:

set myFile to "/Users/YourName/YourFolder/FileName.txt"

Si desea agregar una marca de fecha a sus nombres de archivo, simplemente coloque las siguientes líneas debajo del bloque tell application "Finder"

set time_stamp to (do shell script "date \"+%m-%d-%y\"")
set myFile to "/Users/YourName/YourFolder/PreviewProfile_" & time_stamp & ".txt"

El comando terminal date tiene muchos formatos diferentes disponibles. Para leer acerca de las diferentes opciones disponibles, abra su terminal y escriba man strftime .

Después de jugar un poco más, me doy cuenta de que este script puede simplificarse aún más. Esta es una versión más simplificada que evita algunos pasos innecesarios del original. Pero el resultado es el mismo de cualquier manera.

set text item delimiters to "\n"
tell application "Preview"
    set theDocs to get path of every document as text
    tell application "Finder"
        set time_stamp to (do shell script "date \"+%m-%d-%y\"")
        set myFile to "/Users/YourName/YourFolder/PreviewProfile_" & time_stamp & ".txt"
        do shell script "echo " & quoted form of theDocs & " >> " & myFile
    end tell
end tell

Para facilitar su uso, puede guardar esta secuencia de comandos como un servicio de Automator para usar mientras trabaja en cualquier aplicación. Para hacerlo, simplemente abra Automator y luego, en el menú Archivo , seleccione Nuevo o ⌘N en el teclado. Luego seleccione Servicio de las opciones que se muestran. Cuando se abra el documento, seleccione Utilidades en la columna del extremo izquierdo. Luego seleccione Ejecutar AppleScript en la columna a la derecha de eso. Pega este script en el cuadro que aparece. En las opciones desplegables cerca de la parte superior de la página, seleccione El servicio no recibe ninguna entrada y en cualquier aplicación . Luego simplemente seleccione y nombre, guarde el archivo y debe tener un servicio disponible para usar en cualquier momento en el menú de servicios.

Actualizar

Aquí hay una forma de leer y abrir la lista de archivos que acabamos de crear. Esto le permitirá elegir y elegir qué archivos desea abrir sin tener que abrir todos los archivos de la lista si no lo desea.

tell application "Finder"
    set file_list to {}
    set my_files to paragraphs of (read "/Users/YourName/path/to/YourFile")
    repeat with nextLine in my_files
        if length of nextLine is greater than 0 then
            copy nextLine to the end of file_list
        end if
    end repeat
    choose from list file_list with multiple selections allowed
    set chosen_Files to the result
    repeat with next_file in chosen_Files
        do shell script "open " & next_file
    end repeat
end tell

Espero que ayude. Hasme saber si tienes algunos problemas.

    
respondido por el I0_ol 15.05.2017 - 03:05

Lea otras preguntas en las etiquetas