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