Cómo encontrar todos los archivos PDF modificados

3

Tengo una carpeta con más de 6000 archivos PDF (capítulos, artículos, etc.). Estoy tratando de eliminar / ordenar los que acabo de descargar pero que nunca he comentado. ¿Hay alguna forma de hacer esto? Esos archivos PDF que nunca he anotado suelen tener las mismas fechas "creadas" y "modificadas", por lo que pensé que se podrían usar esos criterios (es decir, buscar archivos cuya fecha modificada sea posterior o no igual a la fecha creada) ), pero no tengo idea de cómo hacerlo.

En otras palabras, necesito poder encontrar cualquier PDF en mi computadora que haya sido modificado.

¡Gracias por cualquier ayuda!

    
pregunta william 09.01.2018 - 20:28

3 respuestas

3

Según la información en el OP y los comentarios, esto hará lo que usted solicitó.

En Automator :

  • Crear un nuevo Flujo de trabajo .
  • Agrega una Búsqueda de elementos del buscador acción .
    • Con la configuración, por ejemplo, Buscar ( Documentos )
    • ( Todos ) de los siguientes son verdaderos
    • ( Tipo ) ( es ) ( PDF )
  • Agrega una Ejecutar AppleScript acción .

    • Reemplace el código predeterminado con el siguiente ejemplo AppleScript código que se muestra más abajo:

    • Nota: Si Skim no está en la carpeta / Aplicaciones , modifique el valor de de la variable skimpdfPathFilename en consecuencia. No debería necesitar modificar nada más a menos que desee configurar el valor de la variable offsetInSeconds , por ejemplo. set offsetInSeconds to 60 , a un valor diferente. Esta variable se usa para ayudar a encontrar los archivos que realmente se han modificado desde que se crearon. La diferencia de granularidad entre creation date y modification date cuando se crea un archivo por primera vez puede ser de 0 segundos a un valor más alto, lo que no es un valor consistente dependiendo de cómo se creó el archivo. Realice los ajustes que considere adecuados para su caso de uso.

Lo que hace el flujo de trabajo y el ejemplo AppleScript código :

  • Encuentra todos los archivos PDF en la carpeta target , incluidas todas las subcarpetas.
    • Esto se hace con la Búsqueda de elementos del Finder acción y su salida se pasa a la Ejecutar AppleScript acción .
  • Crea una lista de todos los archivos PDF que se han modificado después de creation date , según el valor de la variable offsetInSeconds .
    • Esto se hace en el primer repeat loop . Los archivos que cumplen con los criterios se almacenan en modifiedFilesList para ser usados en el siguiente repeat loop .
  • Crea una lista de todos los archivos que tienen anotaciones en Skim .
    • Esto se hace usando xattr para obtener atributos extendidos de los archivos de destino. Si un archivo tiene el objetivo atributos extendidos , un indicador se establece en true y, si no, se establece en false . Los archivos marcados como true van a annotatedSkimFilesList para ser usados en el siguiente repeat loop .
  • Inserta en su lugar las anotaciones hechas a los archivos en Skim .
    • Al usar la utilidad skimpdf dentro de Skim en los archivos en annotatedSkimFilesList , las anotaciones están integradas en su lugar. Por lo tanto, no es necesario exportar a un segundo archivo, luego elimine el original y reemplácelo.

NOTA: Aunque he probado esto y funciona sin problema para mí, no lo ejecute hasta que esté seguro de que tiene una copia de seguridad adecuada. También debe probar el flujo de trabajo en una pequeña muestra de archivos copiados colocados fuera de la carpeta de búsqueda en la que se ejecutará el flujo de trabajo después de que se realicen las pruebas.

Ejemplo AppleScript código :

on run {input, parameters}

    set skimpdfPathFilename to "'/Applications/Skim.app/Contents/SharedSupport/skimpdf'"

    set offsetInSeconds to 60       
    set modifiedFilesList to {}
    set annotatedSkimFilesList to {}

    repeat with i from 1 to count input
        set fileInfo to info for item i of input
        set cDate to creation date in fileInfo
        set mDate to modification date in fileInfo
        if mDate > (cDate + offsetInSeconds) then
            set end of modifiedFilesList to POSIX path of item i of input
        end if
    end repeat

    repeat with i from 1 to count modifiedFilesList
        set withNotes to (do shell script "xattr " & quoted form of item i in modifiedFilesList ¬
            & " | [ $(grep -c \".*_notes$\") -ge 1 ] && printf 'true' || printf 'false'") as boolean
        if withNotes then
            set end of annotatedSkimFilesList to item i in modifiedFilesList
        end if
    end repeat

    repeat with i from 1 to count annotatedSkimFilesList
        do shell script skimpdfPathFilename & space & "embed" & space & ¬
            quoted form of item i in annotatedSkimFilesList
    end repeat

end run

Comprendiendo el comando do shell script en el segundo repeat loop:

Cuando un PDF está anotado en Skim y se guarda, atributos extendidos se configuran en el archivo, por ejemplo :

$ xattr Filename.pdf 
com.apple.FinderInfo
net_sourceforge_skim-app_notes
net_sourceforge_skim-app_rtf_notes
net_sourceforge_skim-app_text_notes
$ 

La salida se canaliza | a:

[ $(grep -c \".*_notes$\") -ge 1 ] && printf 'true' || printf 'false'

Lo que prueba la salida de grep contando las ocurrencias del patrón y si grep encuentra una o más ocurrencias del patrón , entonces el valor de la variable withNotes se establece en true , mientras que se establece en false de lo contrario.

Tenga en cuenta que Skim tiene una utilidad de línea de comandos incorporada, por ejemplo. /Applications/Skim.app/Contents/SharedSupport/skimnotes que se puede usar para probar si un PDF tiene anotaciones hechas en Skim , sin embargo, debido a su salida esta utilidad se usa mejor en un shell script ejecutado en Terminal y luego en do shell script comando , y por qué usé xattr y grep en su lugar.

Nota: El ejemplo AppleScript código anterior es solo eso, y no incluye ningún manejo de errores como sea apropiado / necesario / deseado, la responsabilidad está en el usuario de agregar cualquier manejo de errores apropiado para cualquier código de ejemplo presentado o código escrito por uno mismo.

    
respondido por el user3439894 10.01.2018 - 07:50
1

Introducción
Basándome en sus preguntas y en su comentario de seguimiento que se encuentra debajo, creo que la solución puede ser tan simple como lo que estoy proponiendo. Además del comentario bien escrito de @ user3439894, le creo un par de excelentes opciones para realizar su tarea.

La configuración

  1. Abra la ubicación en Finder y navegue hasta las opciones de vista en la parte superior. Tiene este aspecto:

  2. Ahora,naveguealabarradeopcionesdelarregloenlapartesuperior,hagaclicenellasyverálosiguiente.AsegúresedemarcartantoDateModifiedcomoDateCreatedjuntoconcualquierotraopciónquedeseeordenar.

  3. A continuación, ordene su lista por Date Modified , en mi caso, creé los archivos uno tras otro en orden consecutivo de nombres, no deje que esto lo engañe. He cambiado el archivo 17.pdf y lo he guardado. Como puedes ver, saltó a la parte superior de la lista. Cuando se ve en el orden de decisión.

Implementación
Como todos los archivos ahora están agrupados por su Date Modified , puede arrastrarlos individualmente a su droplet (asumiendo que, de hecho, funciona completamente como usted lo dice). Esto cubriría la segunda mitad de su comentario de seguimiento, mientras que @ user3439894 le ha brindado esencialmente lo que está buscando en la primera mitad.
Me interesaría hacer un seguimiento con usted sobre cómo fueron las cosas, independientemente de la opción que elija, ambas son alternativas a la selección manual de los datos uno por uno.

    
respondido por el ProGrammer 09.01.2018 - 22:30
0

Probablemente, lo más fácil sería crear una carpeta inteligente en el Finder. Esta carpeta inteligente contiene todos los archivos definidos por sus criterios de búsqueda. A partir de ahí, es muy fácil ordenar los archivos de la forma que desee.

En el Finder, vaya al elemento de menú Archivo / Nueva carpeta inteligente.

SideseabuscararchivosPDFentodasucomputadora,seleccione"Macintosh HD" en la barra lateral. En el campo de búsqueda, simplemente ingrese ... .pdf

Enelladoderechodeesaimagen,veráunbotón+debajodelbotónGuardar.Alhacerclicenesebotón,podráingresarmáscriteriosdebúsqueda.Hayunmontóndeopcionesquepuedeelegir.Elegí"extensión de archivo" y agregué .pdf para el valor

EnelFinder,vayaalelementodemenúVer/Mostraropcionesdevista

Asegúresedeque"Fecha de modificación" esté configurado en los dos campos disponibles

Pulsaelbotón"Guardar" debajo de la pestaña que dice nueva carpeta inteligente

AhoratendráunanuevacarpetainteligentecontodossusarchivosPDFenlabarralateraldelFinder.

    
respondido por el wch1zpink 10.01.2018 - 06:56

Lea otras preguntas en las etiquetas