Am făcut câteva teste în arborele directorului meu Fotografii și următorul sistem cu două shellscript-uri funcționează pentru mine.
primul
:
#!/bin/bash
find * -type d -exec second {} \;
ecou ""
al doilea
:
#!/bin/bash
num=$(ls "$1"/*.jpg 2> /dev/null | wc -l)
dacă [ $num -ne 0 ]
atunci
echo -n "."
img2pdf -o „$1/${1//\//-}_${num}_pictures”.pdf „$1”/*.jpg
fi
Editați de două ori: script alternativ al doilea
face un fișier pdf fără număr de imagini și „imagini” în nume:
#!/bin/bash
num=$(ls "$1"/*.jpg 2> /dev/null | wc -l)
dacă [ $num -ne 0 ]
atunci
echo -n "."
img2pdf -o „$1/${1##*/}”.pdf „$1”/*.jpg
fi
Copiați și inserați din zonele de cod într-un editor de text și creați fișierele primul
și al doilea
Faceți-le executabile
chmod +x prima secundă
mutați-le într-un director în PATH. Dacă aceasta este doar pentru uzul dvs. personal, [creați și] mutați-le în ~/bin
. În caz contrar, dacă alți utilizatori ar trebui să folosească și aceste scripturi shell, mutați-le în /usr/local/bin
mkdir ~/bin
mv prima secundă ~/bin
Poate fi necesar să reporniți pentru a obține ~/bin
în Calea ta.
Acum sunteți gata să le utilizați. Schimbați directorul în partea de sus sau în arborele directoare, unde aveți fotografiile și rulați primul
.
Exemplu (dar ai nume locale, nu imagini precum engleza),
cd ~/Imagini
primul
Va scrie un punct în fereastra terminalului pentru fiecare subdirector unde găsește cel puțin o imagine și creează un fișier pdf.
Puteți găsi fișierele pdf cu următoarea comandă
găsiți -nume „*.pdf”
Editare majoră:
După o discuție cu posterul original, cred că am înțeles structura arborelui de directoare care trebuie procesat. Copiile fișierelor de la nivelurile inferioare sunt localizate în directoarele sub-1 cu numele persoanelor.
Fișierele din aceste directoare sub-1 vor fi îmbinate în fișiere pdf.
Exemplu:
$ arbore -U
.
âââ Adam
â  âââ mkusb-minp-2-crop.jpg
â  âââ us_keyboard_for_sudo_password.jpg
â  âââ nautilus-connect-to-server-2.jpg
â  âââ pict1
â  â  âââ mkusb-minp-2-crop.jpg
â  â  âââ nautilus-connect-to-server-2.jpg
â  âââ pict2
â  â  âââ us_keyboard_for_sudo_password.jpg
â  âââ adam.pdf
âââ Betty
âââ nautilus-connect-to-server-1.jpg
âââ mkusb-minp-3-cropx.jpg
âââ pict1
â  âââ nautilus-connect-to-server-1.jpg
â  âââ calamares-mount-failed.jpg
âââ pict2
â  âââ mkusb-minp-3-cropx.jpg
âââ calamares-mount-failed.jpg
âââ betty.pdf
6 directoare, 14 fișiere
Dacă schimbați directorul de lucru cu CD
unde se află aceste nume-directoare, puteți utiliza următoarele modificări primul
shellscript.
#!/bin/bash
find -mindepth 1 -maxdepth 1 -type d -exec secunda {} \;
ecou ""
Va rula al doilea
shellscript numai în directoarele de nume și nu căutați ceea ce este în nivelurile [superioare sau inferioare] ale arborelui de directoare.
Următoarele arată cum găsi
găsește doar directoarele de nume
$ find -mindepth 1 -maxdepth 1
./adam
./betty