লিনাক্স প্রদত্ত স্ট্রিং সহ ফাইলের নাম সন্ধান করে


107

আমি উবুন্টুতে রয়েছি এবং আমি বর্তমান ডিরেক্টরি এবং সাব ডিরেক্টরিতে সমস্ত ফাইল সন্ধান করতে চাই যার নাম "জন" স্ট্রিং রয়েছে। আমি জানি যে grepফাইলগুলির বিষয়বস্তুর সাথে মেলে, তবে এটি ফাইলের নাম দিয়ে কীভাবে ব্যবহার করতে হয় সে সম্পর্কে আমার কোনও ধারণা নেই। কোন সাহায্য প্রশংসা করা হবে।


উত্তর:


195

ব্যবহার করুন খোঁজ কমান্ড

find . -type f -name "*John*"

1
এর সাথে একটি কাস্টম বাশ স্ক্রিপ্ট তৈরি করা #!/bin/bash if [ -z $1 ]; then echo "Error: Specify pattern for search"; else /usr/bin/find . -type f -name "*$1*"; fi আপনাকে কেবল F search-stringএকটি নিখুঁত শর্টকাট হিসাবে চালাতে দেবে
ইলিয়া রোস্তভটসেভ

@ ইলিয়ারোস্টভটসেভ - সুন্দর, তবে [ -z "$1" ]কিছুটা ভাল হবে।
জো

@ জো আহ, ঠিক আছে। আপনার অর্থ যদি কোনও পথে ফাঁকা থাকে? তবে এখানে আমরা কেবলমাত্র $ 1 স্থানের অস্তিত্বের জন্য যাচাই করি $ 2 প্রদর্শিত হবে এবং এটিই। আপনার মানে এটি তাত্ত্বিকভাবে আরও ভাল, তাই না?
ইলিয়া রোস্তভটসেভ

@ ইলিয়ারোস্টভটসেভ - আসলে, আমি ভুল ছিলাম। যদি $ 1 নাল হয় তবে পরীক্ষাটি হয়ে যায় if [ -z ]। আমি ভেবেছিলাম যে এটি একটি সিনট্যাক্স ত্রুটি হবে, তবে এটি কার্যকর হয়। আমি এখন থেকে আমার কিছু কোড সহজ করতে পারি।
জো

25

ইতিমধ্যে একটি সঠিক উত্তর সরবরাহ করা হয়েছে, তবে কীভাবে নিজেকে সাহায্য করতে হয় তা শিখতে আপনি ভেবেছিলাম যে আমি কোনও উপকারী কিছু আলাদা উপায়ে ফেলেছি; আপনি যদি এক কথায় যা অর্জন করতে চাইছেন তা যদি সংক্ষিপ্ত করতে পারেন তবে লিনাক্সে একটি দুর্দান্ত জরিমানা সহায়তা বৈশিষ্ট্য রয়েছে।

man -k <your search term>

এটি যা করে তা হ'ল সংক্ষিপ্ত বর্ণনায় আপনার অনুসন্ধান শব্দটি রয়েছে এমন সমস্ত কমান্ডের তালিকাবদ্ধ করা। সাধারণত খুব ভাল সুযোগ থাকে যে আপনি যা পরে তা পাবেন । ;)

এই আউটপুটটি কখনও কখনও কিছুটা অপ্রতিরোধ্য হতে পারে, এবং আমি এটিকে সমস্ত উপলভ্য ম্যান-পৃষ্ঠাগুলির চেয়ে এটিকে এক্সিকিউটেবলের মধ্যে সংকুচিত করার পরামর্শ দিই:

man -k find | egrep '\(1\)'

বা, আপনি যদি এমন কমান্ডগুলির সন্ধান করতে চান তবে এর জন্য উচ্চতর সুবিধার স্তরগুলির প্রয়োজন হয়:

man -k find | egrep '\([18]\)'

3
আমি কৌতূহলী ... এমন একটি প্রশ্ন যা অনুসন্ধানের মাধ্যমে সমস্যার সমাধানের কোনও প্রচেষ্টা দেখায় না এমন একটি ভোট প্রদান হয়, সম্ভাব্য কমান্ডগুলি সম্পর্কে কীভাবে সন্ধান করা যায় তার একটি বন্ধুত্বপূর্ণ ব্যাখ্যা কীভাবে পদক্ষেপ নেওয়া যায়। মানদণ্ড কি কি? :)
টিঙ্ক

1
আমি আপনাকে উত্সাহিত করেছি পাঠ খুব কম মানুষ এটি করতে পারেন। তবে আমরা নমুনা দেখতে এবং মানিয়ে নিতে পারি :)
tgkprog

2

findকমান্ড দীর্ঘ সময় নিতে হয়েছে কারণ এটি ফাইল সিস্টেম বাস্তব ফাইল স্ক্যান করা হবে।

দ্রুততম উপায় হ'ল locateকমান্ড ব্যবহার করা হচ্ছে , যা অবিলম্বে ফলাফল দেবে:

locate "John"

যদি কমান্ডটি পাওয়া না যায়, আপনাকে প্রথমবারের জন্য অনুসন্ধান ডাটাবেস প্রস্তুত করার জন্য আপনাকে প্রথমে mlocateপ্যাকেজ ইনস্টল করতে হবে এবং updatedbকমান্ডটি রান করতে হবে ।

আরও বিশদ এখানে: https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocon-locon-commands-55bf40b297ab



1

treeআপনি যে ডিরেক্টরিটি অনুসন্ধান করতে চান তাতে কমান্ডটি ব্যবহার করে এটি একটি খুব সহজ সমাধান । -fপূর্ণ ফাইলের পাথ দেখায় এবং |গাছের আউটপুটটি পাইপ করতে ব্যবহৃত হয় যাতে নামেরটিতে grepস্ট্রিং filenameরয়েছে।

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