আমি এগুলি শুরু করে 2 নম্বর দিয়ে শেষ হওয়া ফাইলগুলি মুছতে চেষ্টা করেছি কিন্তু এটি কোনও কাজ করে না।
আমি যা চেষ্টা করেছি:
rm ^A*[0..9]2$
আমি কোথায় ভুল করছি?
আমি এগুলি শুরু করে 2 নম্বর দিয়ে শেষ হওয়া ফাইলগুলি মুছতে চেষ্টা করেছি কিন্তু এটি কোনও কাজ করে না।
আমি যা চেষ্টা করেছি:
rm ^A*[0..9]2$
আমি কোথায় ভুল করছি?
উত্তর:
আপনার মানদণ্ডের সাথে মেলে সমস্ত ফাইল মুছতে আপনি নীচের কমান্ডটি ব্যবহার করতে পারেন:
ls | grep -P "^A.*[0-9]{2}$" | xargs -d"\n" rm
কিভাবে এটা কাজ করে:
ls
সমস্ত ফাইল তালিকাভুক্ত করে (ফলাফলটি পাইপ হওয়ার পরে একের পর এক)।
grep -P "^A.*[0-9]{2}$"
ফাইলগুলির তালিকা ফিল্টার করে এবং কেবল নিয়মিত অভিব্যক্তির সাথে মিলে যায় leaves ^A.*[0-9]{2}$
.*
যে কোনও সংখ্যক ঘটনার ইঙ্গিত দেয় .
যেখানে .
কোনও ওয়াইল্ডকার্ড কোনও চরিত্রের সাথে মিলে যায়।
[0-9]{2}
ঠিক দুটি ঘটনাকে বোঝায় [0-9]
যে কোনও অঙ্ক indicates
xargs -d"\n" rm
, executes rm line
যে জন্য একবার line
এটি জন্য বাঁশি বাজালাম করা হয়।
আমি কোথায় ভুল করছি?
প্রারম্ভিকদের জন্য, rm
একটি আর্গুমেন্ট হিসাবে একটি নিয়মিত অভিব্যক্তি গ্রহণ করে না। ওয়াইল্ডকার্ড ছাড়াও *
অন্যান্য প্রতিটি চরিত্রের সাথে আক্ষরিক আচরণ করা হয়।
এছাড়াও, আপনার নিয়মিত প্রকাশটি কিছুটা বন্ধ। উদাহরণস্বরূপ, *
কোন ঘটনার মানে ...
একটি রেগুলার এক্সপ্রেশন, তাই A*
ম্যাচ A
, AA
ইত্যাদি এবং এমনকি একটি খালি স্ট্রিং।
আরও তথ্যের জন্য, নিয়মিত- এক্সপ্রেসন.ইন.ফোতে যান ।
-d"\n
সুইচ স্পেস সমস্যা সমাধান করা হয়েছে।
grep -P
(পার্ল রেজেক্স) নেই। grep -E
এই ক্ষেত্রে কাজ করতে পারে।
-I
করতে xargs
এবং সর্বদা পরীক্ষা করতে পছন্দ করি :xargs -d"\n" -I {} echo "{}"
ls
? এই নিবন্ধটি নির্দেশ করে যা এই প্রশ্ন দেখুন । সমস্যার কারণে আপনি যা চান না তা করতে পারেন। rm
বা ব্যবহার find
:
find your-directory/ -name 'A*[0-9][0-9]' -delete
এই সমাধানটি অদ্ভুত ফাইলের নামগুলি নিয়ে কাজ করবে।
-type f
xargs
পদ্ধতির সাথে ব্যবহার করতে পারেন rm -f
।
বাশ ম্যান পৃষ্ঠার ফাইল নাম সম্প্রসারণ বিভাগটি দেখুন :
rm A*[0-9][0-9]
রেজিএক্সপক্সের সাথে সমাধানটি 200 গুণ ভাল, এমনকি আপনি দেখতে পাচ্ছেন কোন ফাইলটি মুছে ফেলা হবে কমান্ডটি ব্যবহার করার আগে, চূড়ান্ত পাইপ কেটে ফেলা:
ls | grep -P "^A.*[0-9]{2}$"
তারপরে যদি এটি সঠিক হয় তবে কেবল ব্যবহার করুন:
ls | grep -P "^A.*[0-9]{2}$" | xargs -d "\n" rm
এটি 200 গুণ ভাল কারণ আপনি যদি ইউনিক্সের সাথে কাজ করেন তবে গ্রিপ কীভাবে ব্যবহার করবেন তা জেনে রাখা গুরুত্বপূর্ণ। আপনি যদি এটি কীভাবে ব্যবহার করতে জানেন তবে এটি খুব শক্তিশালী।
find
কমান্ড রেজিজেসগুলির সাথেও কাজ করে।
কোন ফাইলগুলি মুছে ফেলা হচ্ছে তা পরীক্ষা করুন
find . -regex '^A.*[0-9]{2}$'
ফাইল মুছে দিন
find . -regex '^A.*[0-9]{2}$' -delete