'Find' কমান্ড ব্যবহার করে ফাইলগুলির পরম পাথ পান


26

অনুসন্ধান করা কোনও ফাইলের নিখুঁত পথ পাওয়ার কোনও উপায় কি?

উদাহরণ স্বরূপ:

find .. -name "filename"

এটি আমার মতো ফলাফল দেয় ../filenameতবে আমি পুরো পথটি চাই।

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

ধন্যবাদ


উত্তর:


15

এর মতো কিছু চেষ্টা করুন:

find "$(cd ..; pwd)" -name "filename"

ধন্যবাদ, আমি ঠিক পরীক্ষা করছিলাম $(cd ..; pwd)। এখানে এটা ঠিক আছে কাজ করে, কিন্তু যদি আমি এটি একটি টার্মিনাল একা না, আমি পিতা বা মাতা Dir পেতে পারে না ... আমি পেতে "ব্যাশ: <Dir>: যে একটি ডিরেক্টরি ও যদি আমি না। $(cd ..; echo "something")আমি পেতে" কিছু: কোনো কমান্ড "
জর্জিএফজি

আপনি একটি পৃথক কমান্ড মত মানে? তারপরে আপনাকে ডলারের চিহ্নটি ছেড়ে দিতে হবে:(cd ..; pwd)
স্ক্রুটিনাইজার 15

ধন্যবাদ, এটি ছিল। কেন আমি remove অপসারণ করব তার কোনও রেফারেন্স, এটি কীভাবে সাব-শেলকে প্রভাবিত করে?
জর্জিএফজি

1
হ্যাঁ ( ... )মানে একটি সাবশেলে চালানো, আউটপুট স্টাডআউটে লেখা হয় written $( ... )এর অর্থ "কমান্ড সাবস্টিটিউশন"। পরেরটি ব্যবহার করা যেতে পারে যেন এটি একটি পরিবর্তনশীল সম্প্রসারণ।
স্ক্রুটিনাইজার 16

/ ফাইলের নাম "ফাইলের নাম"
প্যান্থার

12

এর -execবিকল্পটি ব্যবহার করে দেখুন find:

find .. -name "filename" -exec readlink -f {} \;

দ্রষ্টব্য: readlinkএকটি প্রতীকী লিঙ্ক বা ক্যানোনিকাল ফাইল নামের মান মুদ্রণ করে।


এটি প্রতিটি ফাইলে রিডলিঙ্ক কল করবে তাই এটি খুব অকার্যকর হবে।
bac0n

9

আপনি bashবর্তমান ওয়ার্কিং ডিরেক্টরিটির পরম পাথ পেতে টিলড এক্সপেনশন ব্যবহার করতে পারেন , এইভাবে findফলাফলের জন্য নিখুঁত পথটিও ছাপায় :

find ~+ -type f -name "filename"

যদি মৃত্যুদন্ড কার্যকর করা হয় ~/Desktopতবে এটি প্রসারিত হয়

find /home/yourusername/Desktop -type f -name "filename"

এবং ফলাফলগুলি প্রিন্ট করে:

/home/yourusername/Desktop/filename

আপনি যদি এই পদ্ধতির বর্তমান ওয়ার্কিং ডিরেক্টরিটির প্যারেন্ট ডিরেক্টরিটি ব্যবহার করতে চান cdতবে কল করার আগে আপনার প্রয়োজন find:

cd .. && find ~+ -type f -name "filename"


1

এছাড়াও পিডাব্লুডি ব্যবহার করে আপনাকে সম্পূর্ণ ডিরেক্টরি দেখায়। পিডাব্লুডি আপনার সমস্ত ফাইল ডিরেক্টরি দেখিয়ে দেবেন যাতে আপনি ফাইলের নাম প্রসারিত করার মতো হন। আশা করি এটি সাহায্য করেছে।


1

এটি আমার পক্ষে কাজ করেছে, তবে কেবল প্রথম ঘটনাটিই ফিরে আসবে।

realpath $(find . -type f -name filename -print -quit)

সমস্ত সংঘটনগুলির জন্য পুরো পাথ পেতে (সের্গেই কলডিয়াজনি দ্বারা প্রস্তাবিত)

find . -type f -name filename | xargs realpath

পূর্ববর্তী মন্তব্য মুছে +1 টি, ভালো চাকরি @Wyrmwood
Sergiy Kolodyazhnyy

1

প্যারামিটার এক্সপেনশন সহ শেষ ডিরেক্টরি উপাদানটি সরানো ।

find "${PWD%/*}" -name 'filename'

পরে ব্যবহারের জন্য কোনও ইনডেক্সড অ্যারে থেকে আউটপুট সংরক্ষণ করতে আপনি কীভাবে মানচিত্র ফাইল ব্যবহার করতে পারেন তার একটি উদাহরণ ।

mapfile -t -d '' < <(find ${PWD%/*} -name 'filename' -print0)

(যদি কোনও অ্যারের নাম নির্দিষ্ট না করা থাকে তবে ম্যাপফাইলটি ডিফল্ট অ্যারের নাম হবে)।

for i in "${MAPFILE[@]}"; do
    echo "$((n++)) $i"
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.