এখানে একটি উপায় যা উপরোক্ত পরামর্শগুলির সেরাটিকে একটি সাধারণ, দক্ষ, শক্তিশালী কমান্ড লাইনে একত্রিত করেছে:
find /path/to/files -iname '*.jpg' -exec mogrify -format pdf {} +
এটি ফাইল নামগুলির সাথে সূক্ষ্মভাবে কাজ করে যা একটিতে শুরু হয় -বা স্পেস থাকে। -inameএর ক্ষেত্রে কেস-সংবেদনশীল সংস্করণ ব্যবহারটি নোট করুন -nameযাতে এটি .JPGঠিক পাশাপাশি কাজ করবে .jpg।
এটি ওয়াইল্ডকার্ডের findসাথে শেল গ্লোবিংয়ের পরিবর্তে ফাইল তালিকা পেতে ব্যবহার করে *.jpgযার ফলে কিছু সিস্টেমে 'আর্গুমেন্টের তালিকা খুব দীর্ঘ' ত্রুটি হতে পারে । @ এনজোটিব একটি মন্তব্যে যেমন উল্লেখ করেছেন, তবুও লুপের জন্য গ্লোববিং ব্যবহারের আচরণ কমান্ডের যুক্তিগুলির চেয়ে আলাদা ।
এছাড়াও, findসাব-ডিরেক্টরিগুলি পরিচালনা করবে, যদিও শেল গ্লোববিং আপনার কাছে **/*jpgzsh এ পুনরাবৃত্ত গ্লোবিং সিনট্যাক্সের মতো শেল-নির্দিষ্ট বৈশিষ্ট্যগুলি না ঘটলে না হয়।
সম্পাদনা: আমি ভেবেছিলাম যে আমি আরও একটি দরকারী বৈশিষ্ট্য যুক্ত findকরব যা আমি প্রথমে রানের পরে পরিবর্তিত ফাইলগুলি রূপান্তর করার বিষয়ে @ ইলমারি কারনেনের একটি মন্তব্য পড়ে এবং কেবল প্রথম রানের পরে পরিবর্তিত ফাইলগুলিকে রূপান্তর করার বিষয়ে ভেবেছিলাম ।
প্রথম পাসে আপনি touchরূপান্তর শেষ হওয়ার পরে টাইমস্ট্যাম্প ফাইল করতে পারেন ।
find /path/to/files -iname '*.jpg' -exec mogrify -format pdf {} +; touch timestamp
তারপরে ফাইলগুলির সাবসেটটিতে পরিচালনা -newer timestampকরার জন্য findএক্সপ্রেশনটিতে যুক্ত করুন যার শেষ-সংশোধিত সময়টি টাইমস্ট্যাম্প ফাইলের চেয়ে নতুন। প্রতিটি রান করার পরে টাইমস্ট্যাম্প ফাইল আপডেট করা চালিয়ে যান।
find /path/to/files -iname '*.jpg' -newer timestamp -exec mogrify -format pdf {} +; touch timestamp
এটি কোনও মেকফাইলে অবলম্বন না করা সহজ উপায় (যদি না আপনি ইতিমধ্যে একটি ব্যবহার করছেন) এবং এটি findযখনই সম্ভব হয় তখন এটি কেন মূল্যবান তা অন্য একটি ভাল কারণ ... সংক্ষিপ্ত থাকা অবস্থায় এর বহুমুখী অভিব্যক্তি রয়েছে।