প্রতিটি ফোল্ডারে ফাইলগুলির জন্য টার্মিনালে ব্যাচ কমান্ডগুলি কীভাবে সম্পাদন করা যায়


0

আমার একটি ফোল্ডার রয়েছে যার ভিতরে কিছু ফোল্ডার রয়েছে। প্রতিটি ফোল্ডারে কিছু bmpফাইল থাকে। আমি প্রতিটি ডিরেক্টরিতে যেতে চাই, bmpচিত্রগুলিকে pgmফর্ম্যাট করতে রূপান্তর করতে এবং আসল bmpফাইলগুলি সরাতে এবং পরবর্তী ডিরেক্টরিতে পুনরাবৃত্তি করতে চাই।

যেমন ফোল্ডারগুলি হয়

.
..
folder-a
folder-b

এবং যে আদেশটি আমি ব্যবহার করতে চাই:

~/folder-a$ mogrify -format pgm *.bmp && rm *bmp

এটি একটি একক কমান্ড যেমন বংশীধ্বনিতুল্য সঙ্গে এই কাজ করা সম্ভব lsমধ্যে ফলাফলের mogrifyকমান্ড? এবং শেল স্ক্রিপ্ট নিয়ে বিরক্ত করবেন না?

উত্তর:


4

find . -name "*.bmp" -exec mogrify -format pmg {} \; -exec rm {} \;

এটি শীর্ষ স্তরের ফোল্ডার থেকে করা উচিত। এটি দ্বিতীয় কমান্ডটি কার্যকর করবে যখন প্রথমটি সফল হয়েছিল।

আপনি যদি উভয় কমান্ড কার্যকর করতে চান এমনকি প্রথমটি সফলভাবে সম্পূর্ণ হয় নি:

find . -name "*.bmp" \( -exec mogrify -format pmg {} \; -o -exec true \; \) -exec rm {} \;


এটি কাজ করা উচিত, find . -name "*.bmp" -exec mogrify -format pgm {} + -exec rm {} +দ্রুত হবে কারণ এটি কম কাঁটাচামচ হবে।
অ্যান্ড্রেস কর্ন

2

এই কাজ করা উচিত.

for f in `ls`; do
  cd $f
  mogrify -format pmg *.bmp && rm *bmp
  cd ..
done

বা এক লাইনে:

for f in `ls`; do cd $f; mogrify -format pmg *.bmp && rm *bmp; cd ..; done

সুতরাং ব্যবহার; পরিবর্তে নতুন লাইনের। কেন একটি একক 'কমান্ড' প্রয়োজন? এটি একটি খুব স্বেচ্ছাসেবী প্রয়োজন মত মনে হয়।
রায়ান গুলার

ডিরেক্টরিগুলির নামগুলিতে সাদা স্থান থাকলে এটি ব্যর্থ হয়।
আন্দ্রেস কর্ন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.