ফাইন্ড-কমান্ড ব্যবহার করার সময় স্প্যামের অনুমতি অস্বীকার করা এড়িয়ে চলুন


21

আমি প্রায়শই নিম্নলিখিত সিনট্যাক্স সহ ফাইলগুলি সন্ধান করার চেষ্টা করি:

find . -name "filetofind"

তবে এটি সাধারণত যে ফোল্ডারগুলিতে অনুমতি প্রত্যাখ্যান করা হয় সে সম্পর্কে অনেকগুলি সারি বা ত্রুটি রিপোর্টিংয়ের (অনুমতি অস্বীকার) ফলাফল করে। ত্রুটি-আউটপুট থেকে সুডো বা অ্যাডভান্সড গ্রেপিং ব্যবহার করা ছাড়া এই স্প্যাম এড়ানো ছাড়া অন্য কোনও উপায় আছে কি?



উত্তর:


27

চেষ্টা

find . -name "filetofind" 2>/dev/null

এটি stderrআউটপুট স্ট্রিমটিকে পুনর্নির্দেশ করবে , যা "অ্যাক্সেস অস্বীকৃত" এক সহ সমস্ত ত্রুটিগুলি ডিভাইসে নালার প্রতিবেদন করতে ব্যবহৃত হয়।


ধন্যবাদ, একটি কবজির মতো কাজ করে :) আমি মনে করি এটির কোনও উপায় না করে এটির কোনও পূর্বরূপ তৈরি না করে ডিফল্ট বিকল্প করার সহজ উপায় নেই।
ব্যবহারকারী 40167

না, এটি শেলের নকশা দ্বারা।
হোয়াইটকিয়ার্ক

9

অপঠনযোগ্য ডিরেক্টরিতে অবতরণ এড়াতে আপনি এগুলি -permএবং -pruneভবিষ্যদ্বাণীগুলিও ব্যবহার করতে পারেন (এটি দেখুন কীভাবে আমি প্রোগ্রাম থেকে "অনুমতি অস্বীকার করা" মুদ্রণ বিবৃতি সরিয়ে ফেলব? - ইউনিক্স এবং লিনাক্স স্ট্যাক এক্সচেঞ্জ ):

find . -type d ! -perm -g+r,u+r,o+r -prune -o -name "filetofind" -print

3

আপনি যদি অন্য ত্রুটি দেখতে চান এবং আপনার কাছে "অনুমতি অস্বীকৃত" নামক ফাইল নেই তবে এটি "আরও ভাল" কাজ করবে।

find . -name "filetofind" 2>&1 | grep -v 'permission denied' 

বিপরীত বিকল্পের সাথে আউটপুটটিকে গ্রেপ-এ পুনর্নির্দেশ করা হচ্ছে।

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