সনাক্ত করে ফিরে আসা সমস্ত ফাইল কীভাবে মুছবেন


13

এই মুহুর্তে আমি সেটাই করছি:

ধাপ 1:

locate fooBar
/home/abc/fooBar
/home/abc/Music/fooBar

ধাপ ২:

প্রতিটি লাইন অনুলিপি করে ম্যানুয়ালি একটি অপসারণ সঞ্চালন।

rm /home/abc/fooBar
rm /home/abc/Music/fooBar

আমি কীভাবে এক ধাপে এটি করব? কিছুটা এইরকম

fooBar> আরএম অনুসন্ধান করুন

ধন্যবাদ।


তুমি কি এটা চাও? rm -i fooBar``
এলএফসি_ফ্যান

উপরেরটি কী করে তা আমি নিশ্চিত নই। আমি যখন আমি একটি কমান্ড কমান্ড চালাই তখন ফিরে আসা পথগুলি থেকে সমস্ত ফাইল সরিয়ে ফেলতে চাই।
TheTuxRacer

উত্তর:


13

অন্যান্য অধ্যায়গুলি ইতিমধ্যে উল্লেখ করেছে যে, xargs আপনার বন্ধু। এটি একটি সত্যই শক্তিশালী হাতিয়ার এবং আমি এটি ব্যাখ্যা করার চেষ্টা করব এবং একটি সাধারণ গোটার জন্য একটি কার্যকারিতা সরবরাহ করব।

এক্সার্গস যা করে তা হ'ল ইনপুট থেকে একটি লাইন নেওয়া এবং এটি অন্য কমান্ডে যুক্ত করা, ইনপুটটির প্রতিটি লাইনের জন্য অন্য কমান্ডটি কার্যকর করে। তাই টাইপ করে locate foobar | xargs rm -fঅবস্থান নির্ণয়, কমান্ডের আউটপুট হবে শেষ সম্মুখের patched এর rm -fকমান্ড, এবং দ্বারা উত্পাদিত প্রতিটি লাইনে জন্য মৃত্যুদন্ড কার্যকর করা locate foobar

গোটচা:

কিন্তু যদি আপনার লাইনে ফাঁকা জায়গা থাকে (গুলি) সনাক্ত করে ফিরে আসে? এটি rm -fকমান্ডটি ভেঙে দেবে কারণ আরএম-এ পাস হওয়া আর্গুমেন্টগুলির ফাইল হওয়া দরকার (যদি আপনি -r সুইচ ব্যবহার না করেন) এবং কোনও ফাইল-পাথ এড়িয়ে যাওয়ার প্রয়োজন হয় বা এতে ফাঁকা স্থান রয়েছে কিনা তা উদ্ধৃত করা দরকার।

xargs চাই, -i সুইচ প্রদান করে প্রতিস্থাপন কমান্ড পরিবর্তে শুধু এটা সংযোজন এর অনুসরণ করে মধ্যে ইনপুট। সুতরাং আমি প্রস্তাবটি পরিবর্তন করতে চাই

locate foobar | xargs -ixxx rm -f 'xxx'

যা কেবলমাত্র তখনই ভেঙে যাবে যদি ফাইলের নামগুলি অ্যাডেস্ট্রোফগুলি সনাক্ত করে ফিরে আসে।

আমি qbi সঙ্গে একমত হবে, যে আপনার হওয়া উচিত ব্যবহারে সাবধান RM -f ! এক্স-জার্গে -p পতাকাটি ব্যবহার করুন, বা এক্সগার্সকে খাওয়ানোর আগে কেবল ফুবারটি সনাক্ত করুন বা আরএম থেকে -f ড্রপ করুন।

locate foobar | xargs -p -ixxx rm -f 'xxx'

9
তাদের নামে বহিরাগত অক্ষর (নিউলাইন, কোটস, অ্যাডোস্ট্রোফেস, ইত্যাদি) সহ ফাইলগুলির বিরুদ্ধে শক্তিশালী হওয়ার জন্য, আপনি সনাক্ত করতে এবং xargs করতে -0( --null) বিকল্পটি ব্যবহার করতে পারেন । ফাইলের নামগুলি পৃথক করতে এটি নিরাপদ ASCII NUL চরিত্রটি ব্যবহার করে:locate -0 foobar | xargs -0 rm
Jukka Matilainen

1
উত্তরের জন্য +1, এবং
cha

আমি চেষ্টা করেছিলাম কিন্তু কাজ হয়নি।
Pronoy999

আংশিকভাবে কাজ করেছেন
স্টিভস

7

এর সাথে ব্যবহারের জন্য আপনার আরও কিছু বিকল্পের প্রয়োজন হতে পারে xargs। এটি দিয়ে প্রথমে পরীক্ষা করুন xargs -p। যদি এটি ঠিক থাকে তবে -pবিকল্পটি সরিয়ে ফেলুন :

locate foobar | xargs rm

6

সনাক্ত করে ফিরে আসা সমস্ত ফাইল মুছতে আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি জারি করুন

locate foobar | xargs rm -f

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