Berikut adalah cara yang menggabungkan saran terbaik di atas menjadi baris perintah yang sederhana, efisien, dan kuat:
find /path/to/files -iname '*.jpg' -exec mogrify -format pdf {} +
Ini berfungsi baik dengan nama file yang dimulai dengan -atau mengandung spasi. Perhatikan penggunaan -inameyang merupakan case-sensitive versi -namesehingga akan bekerja pada .JPGsama seperti .jpg.
Ini digunakan finduntuk mendapatkan daftar file alih-alih shell globbing dengan *.jpgwildcard yang dapat mengakibatkan kesalahan 'Daftar argumen terlalu lama' pada beberapa sistem. Meskipun seperti yang ditunjukkan oleh @enzotib dalam komentar, perilaku menggunakan globbing dalam for for berbeda dari argumen perintah .
Juga, findakan menangani subdirektori, sedangkan shell globbing tidak akan kecuali Anda kebetulan memiliki fitur spesifik shell seperti **/*jpgsintaks globbing rekursif di zsh.
EDIT: Saya pikir saya akan menambahkan fitur lain yang berguna findyang saya pikirkan setelah membaca komentar oleh @IlmariKaronen tentang menjalankan kembali perintah dan hanya mengonversi file yang telah berubah sejak dijalankan pertama kali.
Pada pass pertama Anda dapat touchfile cap waktu setelah konversi selesai.
find /path/to/files -iname '*.jpg' -exec mogrify -format pdf {} +; touch timestamp
Kemudian tambahkan -newer timestampke findekspresi untuk beroperasi pada subset file yang waktu modifikasi terakhirnya lebih baru daripada file timestamp. Lanjutkan memperbarui file stempel waktu setelah setiap kali dijalankan.
find /path/to/files -iname '*.jpg' -newer timestamp -exec mogrify -format pdf {} +; touch timestamp
Ini adalah cara mudah untuk menghindari keharusan menggunakan Makefile (kecuali jika Anda sudah menggunakan Makefile) dan itu adalah alasan bagus mengapa layak digunakan findkapan saja mungkin ... itu memiliki ekspresif serbaguna sementara tetap ringkas.