আরএমকে গ্রেপ আউটপুট দিচ্ছে


47

আমি grepআউটপুটটি পাইপ দেওয়ার চেষ্টা করছি rmতবে এটি অকেজো জিনিসগুলিকে আউটপুট করে। কোন সুইচ প্রয়োজন rm? অথবা rmসরাসরি একটি রেজিপেক্স সরবরাহ করা যেতে পারে?

ls | grep '^\[Daruchini'| rm

আরএম: নিখোঁজ অপরেন্ড আরও তথ্যের জন্য `rm --help 'চেষ্টা করুন।


সর্বদা অনুলিপি বার্তা অনুলিপি করুন। (আমি ভবিষ্যতের পাঠকদের উপকারের জন্য প্রকৃত ত্রুটি বার্তাটি sertedোকালাম। তবে আমি কেবল এটি করতে পারলাম কারণ এই ক্ষেত্রে কেবলমাত্র একটি সম্ভাব্য ত্রুটি বার্তা রয়েছে Most বেশিরভাগ সময় সমস্যাটি বোঝার জন্য সঠিক ত্রুটির বার্তা থাকা খুব গুরুত্বপূর্ণ vital । তাই সবসময় কপি-পেস্ট পূর্ণ সমস্ত ত্রুটি বার্তা)।
গিলেজ 'SO- স্টপ হচ্ছে মন্দ'

উত্তর:


57

আপনার পক্ষে xargsস্ট্যান্ডার্ড ইনপুটকে আর্গুমেন্টে রূপান্তর করতে ব্যবহার করতে হবে rm

$ ls | grep '^Dar' | xargs rm

(ফাইলের নামগুলিতে বিশেষ অক্ষর সম্পর্কে সতর্ক থাকুন; জিএনইউ গ্রেপ সহ, আপনি পছন্দ করতে পারেন

$ ls | grep -Z '^Dar' | xargs -0 rm

)

এছাড়াও, যখন শেলটি রিজেক্সপস ব্যবহার করে না, এটি একটি সাধারণ প্যাটার্ন:

$ rm Dar*

(ইতিমধ্যে, আমি মনে করি আমার আরও ঘুম দরকার।)


2
ধরে নেওয়া প্রশ্নকর্তা কোন ভুল করেন নি যখন সে (গুলি) প্রশ্ন পোস্ট করেছে (গুলি) সে পরে আছে rm Dar*, নেই rm !(Dar*)
গিলস 21:55-

... ঠিক আছে, হ্যাঁ, আমি zsh ^মোডে আটকে ছিলাম ( basg !জিনিসটির সমান )।
গাইকোসর

1
+1 দুর্দান্ত উত্তর, কিছুটা | tr "\n" "\0"আগে আমাকে যোগ করতে হয়েছিল xargs। : এই পোস্ট সম্পর্কে দেখা stackoverflow.com/questions/20307299/...
আদম Plocher

5

এর আউটপুট বিশ্লেষণ করবেন নাls

এখানে, আপনার পছন্দ মতো ফাইলগুলি ফিল্টার করার জন্য শেলটি পাওয়া খুব সহজ। লক্ষ্য করুন যে এটি শেল যা প্যাটার্নটি প্রসারিত করছে Dar*, rmআদেশ নয় not শেল দ্বারা সম্পাদিত প্যাটার্ন সম্প্রসারণকে গ্লোববিং বলে

rm Dar*

আরও জটিল ক্ষেত্রে findকমান্ডটি সন্ধান করুন।


3

আপনি যদি grepহোয়াইটস্পেসের পরিবর্তে নিউলাইন দ্বারা আউটপুট সীমিত করতে চান তবে আপনি বিকল্পটির xargsমাধ্যমে এটি নির্দিষ্ট করতে পারেন -d

$ ls | grep '^Dar' | xargs -d '\n' rm

( এই প্রশ্নে বর্ণিত হিসাবে )


2

আর্গুমেন্ট হিসাবে আউটপুট পাস করার জন্য, আমি কিছুটা লুপ ব্যবহার করার প্রবণতা রাখি কারণ আমি xargs এর সাথে পরিচিত নই।

ls | grep '^Dar' | while read line; do rm "$line";done;

এই একমাত্র আমার ক্ষেত্রে কাজ করেছে।
মার্বেল

0

আমার জন্য সর্বোত্তম আদেশ হ'ল:

find ./Daruchini* -exec rm {}\;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.