Tengo varias carpetas con esta estructura:
Nombre de carpeta/tmp
Otro nombre de carpeta/tmp
etcétera...
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 todos los directorios tmp con esta estructura de nombre, mover los archivos PDF originales a la papelera y cambiar el nombre del pdf combinado con pdf-name.pdf
¿Hay alguna forma de hacerlo usando la línea de comandos o el script bash en macOS?
Que tú mucho.
ACTUALIZACIÓN PARA ACLARACIÓN
Necesito combinar todos los archivos PDF dentro de su propia carpeta tmp, no todos los archivos PDF dentro de TODAS las carpetas tmp.
Aunque solicitó específicamente el script bash, pero como respuesta complementaria, podría considerar usar el script de python a continuación. Curiosamente, una parte del proyecto 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 exige este programa es codificar las rutas que contienen las subcarpetas /tmp. Eso también se puede automatizar según la cantidad de automatización que desee. No recomendaré eliminar los archivos PDF originales a menos que ocupen demasiado espacio.
ACTUALIZACIÓN : busca todas las subcarpetas que tengan el nombre 'tmp' en el directorio de trabajo actual y combina todos los archivos pdf dentro de cada una de las carpetas tmp.
Aparentemente /System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py
es una herramienta nativa en Mac para combinar múltiples archivos PDF. Si eso no hace lo que desea, deberá instalar algún software adicional para manejar esa parte. Mire Imagemagick , Graphicsmagick o pdfjam para eso. Estoy seguro de que hay muchos otros.
Para la parte del guión, puede hacerlo todo con una sola línea (aquí se muestra dividido por simplicidad, pero puede 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 "Combining pdf files in $d" && some_pdf_combiner_tool $list_of_files_to_combine pdf-name.pdf && rm $list_of_files_to_combine;
done
Reemplace some_pdf_combiner_tool
con el nombre de cualquier herramienta que haya elegido arriba.
Recomiendo probar esto a fondo para asegurarse de que la combinación funcionó antes de eliminar los archivos pdf originales.
Tenga en cuenta también que rm
desde la Terminal solo se eliminarán los archivos directamente, no se colocarán en la Papelera para una posible recuperación posterior. Si eliminarlos desde la línea de comandos es importante para usted, consulte ¿ Cómo mover archivos a la papelera desde la línea de comandos?
José
anshu957
José
anshu957
José
anshu957
if file.endswith(".pdf"):
aif file.endswith(".pdf") and 'name' in file
o algo así, según sus requisitos.