আমি বাশের তুলনায় তুলনামূলকভাবে নতুন এবং এমন কিছু করার চেষ্টা করছি যা পৃষ্ঠের উপরে বেশ সোজা মনে হয়েছিল - * .wma ফাইলগুলির সমস্ত পেতে একটি ডিরেক্টরি বিকাশ অনুসন্ধান করুন, সেই আউটপুটটিকে একটি কমান্ডে পাইপ করুন যেখানে আমি তাদের এমপি 3 এ রূপান্তর করি এবং রূপান্তরিত ফাইল .mp3 হিসাবে সংরক্ষণ করুন। আমার ধারণাটি হ'ল কমান্ডটি নিম্নলিখিতগুলির মতো হওয়া উচিত (আমি অডিও রূপান্তর কমান্ডটি ছেড়ে দিয়েছি এবং পরিবর্তে চিত্রের জন্য প্রতিধ্বনি ব্যবহার করছি):
$ find ./ -name '*.wma' -type f -print0 | xargs -0 -I f echo ${f%.*}.mp3
যেহেতু আমি এটি বুঝতে পেরেছি,--প্রিন্ট0 আরগটি আমাকে ফাইল নামগুলি হ্যান্ডেল করতে দেবে যাতে স্পেস রয়েছে (যা অনেকে মিউজিক ফাইল হিসাবে এটি করেন)। তারপরে আমি প্রত্যাশা করছি (xargs এর ফলস্বরূপ) যে অনুসন্ধানের প্রতিটি ফাইল পাথ চ'তে ক্যাপচার করা হয়েছে, এবং স্ট্রিংয়ের ম্যাচটি / স্ট্রিংয়ের শেষে থেকে মুছুন তা ব্যবহার করে আমি এমপি 3 দিয়ে মূল ফাইলের পথটি প্রতিধ্বনিত করব WMA এর পরিবর্তে এক্সটেনশন instead তবে, এই ফলাফলের পরিবর্তে, আমি নিম্নলিখিতগুলি দেখছি:
*.mp3
*.mp3
*.mp3
*.mp3
*.mp3
*.mp3
*.mp3
*.mp3
*.mp3
...
সুতরাং আমার প্রশ্নটি (এখানে 'আমি কী ভুল করছি' নির্দিষ্ট করে বাদে) - এটি হল - পাইপের ক্রিয়াকলাপের ফলস্বরূপ মানগুলি একটি পরিবর্তনশীল অ্যাসাইনমেন্টের ফলাফলের চেয়ে স্ট্রিং ম্যানিপুলেশন অপারেশনগুলিতে আলাদাভাবে চিকিত্সা করা দরকার do ?
{}
xargs
আরও উপযুক্ত যেখানে রয়েছে exec
। এই stackpost দেখুন stackoverflow.com/questions/896808/find-exec-cmd-vs-xargs বিন্দু একটি কেস জন্য।
xargs
সাথে ব্যবহার করার কোনও কারণ নেইfind
। এটি একটি-exec
বিকল্প সঙ্গে আসে । আপনি কি আপনার প্রশ্নে কেবল যে আদেশটি ব্যবহার করতে চলেছেন তা যুক্ত করতে পারেন, এবং কেউ আপনাকে সঠিকfind
আদেশটি প্রদর্শন করতে পারে ?