Ich habe mehrere Ordner mit dieser Struktur:
Ordnername/ tmp
Anderer Ordnername/tmp
usw...
Im tmp-Ordner habe ich viele PDF-Dateien mit diesem Namensmuster:
pdf-name-1.pdf pdf-name-2.pdf .... und mehr
Ich suche nach einer Möglichkeit, alle PDF-Dateien in allen tmp-Verzeichnissen mit dieser Namensstruktur zusammenzuführen, Original-PDFs in den Papierkorb zu verschieben und kombinierte PDFs in pdf-name.pdf umzubenennen
Gibt es eine Möglichkeit, dies über die Befehlszeile oder das Bash-Skript in macOS zu tun?
Vielen Dank.
UPDATE ZUR KLÄRUNG
Ich muss alle PDFs in einem eigenen tmp-Ordner kombinieren, nicht alle PDFs in ALLEN tmp-Ordnern.
Obwohl Sie ausdrücklich nach einem Bash-Skript gefragt haben, könnten Sie als ergänzende Antwort die Verwendung des folgenden Python-Skripts in Betracht ziehen. Interessanterweise wurde ein Teil des Python-Projekts (Ipython) speziell entwickelt, um bash zu ersetzen .
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))
Das, was dieses Programm verlangt, ist, die Pfade fest zu codieren, die /tmp-Unterordner enthalten. Dies kann auch automatisiert werden, je nachdem, wie viel Automatisierung Sie möchten. Ich werde nicht empfehlen, Original-PDFs zu entfernen, es sei denn, sie nehmen zu viel Platz ein.
UPDATE : Sucht nach allen Unterordnern mit dem Namen „tmp“ im aktuellen Arbeitsverzeichnis und kombiniert alle PDF-Dateien in jedem der tmp-Ordner.
Anscheinend /System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py
ist es ein natives Tool auf dem Mac, um mehrere PDF-Dateien zu kombinieren. Wenn das nicht ganz das tut, was Sie wollen, müssen Sie zusätzliche Software installieren, um diesen Teil zu handhaben. Sehen Sie sich dazu Imagemagick , Graphicsmagick oder pdfjam an . Ich bin sicher, es gibt noch viele andere.
Für den Skriptteil können Sie alles mit einem Einzeiler erledigen (hier der Einfachheit halber gebrochen dargestellt, aber Sie können alles in eine Zeile schreiben):
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
Ersetzen Sie some_pdf_combiner_tool
durch den Namen des oben ausgewählten Tools.
Ich empfehle, dies gründlich zu testen, um sicherzustellen, dass das Kombinieren funktioniert, bevor Sie die ursprünglichen PDF-Dateien löschen.
Beachten Sie auch, dass rm
das Terminal die Dateien nur direkt löscht und nicht in den Papierkorb legt, um sie möglicherweise später abzurufen. Wenn es Ihnen wichtig ist, sie von der Befehlszeile aus in den Papierkorb zu verschieben, lesen Sie Wie verschiebt man Dateien von der Befehlszeile in den Papierkorb?
Josef
anshu957
Josef
anshu957
Josef
anshu957
if file.endswith(".pdf"):
bisif file.endswith(".pdf") and 'name' in file
oder so ähnlich, je nach Ihren Anforderungen.