1 votos

¿Cómo combinar varios archivos pdf basados en la ubicación y el nombre con la línea de comandos?

Tengo varias carpetas con esta estructura:

Nombre de la carpeta/ tmp

Otro nombre de carpeta/tmp

y así sucesivamente...

Dentro de la carpeta tmp tengo muchos archivos pdf con este patrón de nombre:

pdf-nombre-1.pdf pdf-nombre-2.pdf .... y más

Estoy buscando la manera de unir todos los archivos pdf dentro de todas las carpetas tmp con esta estructura de nombre, mover los PDF originales a la papelera y renombrar el pdf combinado con pdf-nombre.pdf

¿Hay alguna forma de hacerlo usando la línea de comandos o un script de bash en macOS?

Muchas gracias.

ACTUALIZACIÓN PARA ACLARACIÓN

Necesito combinar todos los PDF dentro de su propia carpeta tmp, no todos los PDF dentro de TODAS las carpetas tmp.

1voto

Dmitriusan Puntos 118

Aunque específicamente pediste un script de bash, como respuesta complementaria podrías considerar usar el script de python que se muestra a continuación. Curiosamente, una parte del proyecto de python (Ipython) fue diseñada específicamente para reemplazar bash.

from PyPDF2 import PdfFileMerger
import os 

def merge_it(files,path):
    merger = PdfFileMerger()
    for file in files:
        merger.append(file)

    merger.write(os.path.join(path,"combined_file.pdf"))
    merger.close()

for path, dirs, files in os.walk(os.getcwd()):
    for dir in dirs:
        if dir == 'tmp':

            pdf_files = []
            for file in os.listdir(os.path.join(path,dir)):
                if file.endswith(".pdf"):
                    pdf_files.append(os.path.join(path,dir, file))
            merge_it(pdf_files,os.path.join(path,dir))

Lo que este programa requiere es codificar de forma permanente las rutas que contienen subcarpetas /tmp. Eso también se puede automatizar dependiendo de cuánta automatización desees. No recomendaré eliminar los PDF originales a menos que estén ocupando demasiado espacio.

ACTUALIZACIÓN: Busca todas las subcarpetas con el nombre 'tmp' en el directorio de trabajo actual y combina todos los archivos PDF dentro de cada carpeta tmp.

0 votos

Gracias por tu respuesta. Hay más de 1000 carpetas tmp por lo que necesito algún script automatizado. Gracias de nuevo por tu ayuda.

0 votos

@Jose : Edité mi respuesta. Ahora también funciona para encontrar automáticamente carpetas tmp.

0 votos

Gracias, necesito combinar todos los PDF dentro de su propia carpeta de tmp, no todos los PDF dentro de TODAS las carpetas de tmp. Ya he actualizado la descripción de la pregunta...

0voto

woolfie Puntos 41

Aparentemente /System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py es una herramienta nativa en Mac para combinar varios archivos PDF. Si eso no hace exactamente lo que quieres, necesitarás instalar software adicional para manejar esa parte. Mira Imagemagick, Graphicsmagick, o pdfjam para eso. Estoy seguro de que hay muchos otros.

Para la parte del script, puedes hacerlo todo con una sola línea de comando (mostrada separada aquí para simplicidad, pero puedes ponerlo todo en una sola línea):

for tmpdir in $(find . -type d -name "tmp"); do 
    list_of_files_to_combine=$(find . -name "*.pdf") && echo "Combinando archivos pdf en $d" && some_pdf_combiner_tool $list_of_files_to_combine pdf-name.pdf && rm $list_of_files_to_combine;
done

Reemplaza some_pdf_combiner_tool con el nombre de la herramienta que hayas elegido anteriormente.

Recomiendo probar esto a fondo para asegurarte de que la combinación ha funcionado antes de borrar los archivos PDF originales.

Además, ten en cuenta que rm desde la Terminal simplemente eliminará los archivos directamente, no los pondrá en la Papelera para posible recuperación posterior. Si es importante para ti enviarlos a la Papelera desde la línea de comandos, consulta ¿Cómo mover archivos a la Papelera desde la línea de comandos?

1 votos

Aquí hay una aplicación que es nativa de macOS que se unirá a los pdfs- /System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py

1 votos

Votado arriba por resaltar el problema de rm vs trash.

0 votos

Gracias por tu respuesta, pero este comando combina todos los PDF dentro de cualquier carpeta tmp en un solo PDF y necesito combinar los PDF dentro de su propia carpeta tmp.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X