কমান্ড থেকে সমস্ত ফাইল আউটপুট কীভাবে সরানো যায়?


22

সেগুলিতে সংযুক্তি শব্দটি ছাড়াই ফাইলগুলি অনুসন্ধান করার জন্য আমার এই গ্রেপ কমান্ডটি রয়েছে।

grep -L -- Attachments *

আমি এই কমান্ড থেকে আউটপুট থাকা সমস্ত ফাইল সরিয়ে নিতে চাই। বাশে আমি কীভাবে এটি করব? আমি কি পাইপ ব্যবহার করব? আমি যদি পূর্ণ-স্ক্রিপ্টে / এরপরে বিবৃতি দিয়ে থাকি তবে আরও শব্দযুক্ত ব্যবহার করব?

উত্তর:


18

আপনি যদি জানেন যে ফাইলের নামের মধ্যে কোনও নতুন লাইন, ট্যাব, স্পেস বা গ্লোব সংমিশ্রণ রয়েছে যা কোনও ম্যাচ তৈরি করতে পারে, তবে এটি অফ-কেসের ক্ষেত্রে সহজ হতে পারে:

mv $(grep -L Attachments *) dest_dir

36

আপনি যা করতে চান তা হ'ল পাইপ এবং grepএস -Zবিকল্পটি ব্যবহার করুন :

জিএনইউ গ্রেপ এবং এমভি ব্যবহার করে

grep -LZ -- Attachments * | xargs -0 mv -t target_directory

-Zসঙ্গে মিলিত xargs -0বিশেষ অক্ষর হ্যান্ডলগুলি কোন ফাইলের নামের।

বিএসডি গ্রেপ এবং এমভি ব্যবহার করা (ম্যাকোস এক্স এর মতো)

grep -L --null -- Attachments * |
while IFS= read -r -d "" file; do 
    mv "./$file" target_directory
done

বাসদ তারিখে, grep -Zমানে ডিকম্প্রেস , grep --nullউভয় বাসদ এবং গনুহ কাজ করে। বাসদ mvবিকল্প অভাব আছে-t

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