আমি সমস্ত .sh এক্সটেনশানগুলি মুছে ফেলতে চেয়েছিলাম তাই করেছে:
ls *.sh | xargs -I {} mv {} `basename {} .sh`
তবে এটি কাজ করে না, এটি basename
অপরিবর্তিত ফাইলের নামের মতো আচরণ করে ।
কেন এমনভাবে আচরণ করা হচ্ছে?
উদাহরণস্বরূপ, এটি কাজ করে:
ls *.sh | xargs -I {} echo `basename {}.jpg .jpg`;
সম্পাদনা :
সমাধান: `basename ...`
কমান্ড চালানোর আগে একক উদ্ধৃতি শেল দ্বারা মূল্যায়ন রোধ করে।
ls *.sh | xargs -I {} sh -c 'mv {} `basename {} .sh`'
-i
বিকল্পটির সাথে সম্পর্কিত তবে সেই 'ক্লাসিক' বিকল্পগুলি হ্রাস করা হয়েছে। উদাহরণস্বরূপ কেবল একটি বিকল্প / লাইন ব্যবহার করার জন্য, নতুন পসিক্স ম্যান পৃষ্ঠাটি সুপারিশ করে-L1
। এর পুরানো আচরণটি কল করতে-i
, পৃষ্ঠাটি-I'{}'
বিকল্পটি সুপারিশ করে ।