কমান্ড লাইন ব্যবহার করে নাম অনুসারে একটি ফাইল সন্ধান করুন

আমি কমান্ড লাইন ব্যবহার করে একটি ফাইল অবস্থান নির্ধারণ করতে চাই. আমি চেষ্টা করেছি:

find . -type f -name "postgis-2.0.0"

এবং

locate postgis-2.0.0

কোন উপকার. ফাইলের ডিরেক্টরি নির্ধারণ করার কমান্ডটি কী, এর নাম সরবরাহ করে?

চেষ্টা করুন find ~/ -type f -name "postgis-2.0.0" পরিবর্তে.

ব্যবহার . শুধুমাত্র বর্তমান ডিরেক্টরি অনুসন্ধান করবে. ~/ আপনার সম্পূর্ণ হোম ডিরেক্টরি অনুসন্ধান করবে (সম্ভবত যেখানে আপনি এটি ডাউনলোড করেছেন). আপনি যদি ব্যবহার করেন wget রুট হিসাবে, এটি সম্ভব এটি অন্য কোথাও হতে পারে যাতে আপনি ব্যবহার করতে পারেন / পুরো ফাইল সিস্টেম অনুসন্ধান করতে.

গুডলাক

আমি চেষ্টা করব:

sudo find / -type d -name "postgis-2.0.0"

দ্য . শুধুমাত্র বর্তমান ডিরেক্টরির মধ্যে অনুসন্ধান মানে, এটা আপনি কি সত্যিই জানি না যদি রুট থেকে সবকিছু অনুসন্ধান করার জন্য সবচেয়ে ভাল হয়. এছাড়াও, টাইপ-এফ ফাইল, না ফোল্ডার জন্য অনুসন্ধান মানে. যোগ করা হচ্ছে sudo এটা সব ফোল্ডার/সাবফোল্ডার অনুসন্ধান করতে পারবেন.

আপনার সিনট্যাক্স জন্য locate সঠিক, কিন্তু আপনি চালাতে হতে পারে

sudo updatedb

প্রথম. যাই হোক না কেন কারণে, আমি সঙ্গে সৌভাগ্য আছে না locate যদিও.

locate দ্বারা তৈরি ফাইল এবং ডিরেক্টরি ডাটাবেস ব্যবহার করে updatedb. সুতরাং আপনি যদি একটি নতুন ফাইল ডাউনলোড করে থাকেন তবে আরও সম্ভাবনা রয়েছে যে আপনার updatedb ফাইল এবং ডিরেক্টরি ডাটাবেস আপডেট করা হয় নি. আপনি ব্যবহার করতে পারেন sudo updatedb ব্যবহার করার আগে locate ইউটিলিটি প্রোগ্রাম.updatedb সাধারণত লিনাক্স সিস্টেমে নিজে একবার একটি দিন চালায়.

অন্যান্য উত্তর ভাল, কিন্তু আমি বাদ খুঁজে Permission denied বিবৃতি আমাকে পরিষ্কার উত্তর দেয় (বাদ দেয় stderrচলমান না থাকার কারণে এস sudo):

find / -type f -iname "*postgis-2.0.0*" 2>/dev/null

কোথায়:

  • / আপনি যে ডিরেক্টরিটি থেকে আপনার অনুসন্ধান শুরু করতে চান তার সাথে প্রতিস্থাপন করা যেতে পারে
  • f এর সাথে প্রতিস্থাপন করা যেতে পারে d আপনি যদি ফাইলের পরিবর্তে ডিরেক্টরি অনুসন্ধান করেন
  • -iname এর সাথে প্রতিস্থাপন করা যেতে পারে -name আপনি যদি অনুসন্ধানটি কেস সংবেদনশীল হতে চান
  • দ্য *আপনি যদি অনুসন্ধানে ওয়াইল্ডকার্ড না চান তবে অনুসন্ধান শব্দটি বাদ দেওয়া যেতে পারে

একটি বিকল্প হল:

find / -type f 2>/dev/null | grep "postgis-2.0.0"

অনুসন্ধান-শব্দটি সম্পূর্ণ ফাইল পাথের যে কোনও জায়গায় মেলে যদি এই ভাবে ফলাফল প্রদান করে, যেমন /home/postgis-2.0.0/docs/Readme.txt

খুঁজুন সবচেয়ে দরকারী লিনাক্স / ইউনিক্স সরঞ্জাম এক.

চেষ্টা করুন find . -type d | grep DIRNAME

চেষ্টা করুন find . -name "*file_name*"

  • যেখানে পরিবর্তন করতে পারবেন''(বর্তমান ডিরেক্টরি দেখব) থেকে '/'(সমগ্র সিস্টেমের মধ্যে চেহারা) বা '~/ ' (হোম ডিরেক্টরি দেখব).

  • আপনি কোন ক্ষেত্রে সংবেদনশীল চান তাহলে আপনি "-নাম" থেকে "-নাম" পরিবর্তন করতে পারেন যেখানে.

  • যেখানে আপনি পরিবর্তন করতে পারেন "ফাইলের নাম"(শুরু এবং যাই হোক না কেন এটা দিয়ে শেষ করতে পারেন যে একটি ফাইল) ফাইলের ঠিক নাম.

এই ফাইল সনাক্তকরণ সহজ করা উচিত:

এটি আপনাকে ফাইলের পুরো পথ দেবে

tree -f  / | grep postgis-2.0.0

বৃক্ষ একটি গাছ মত বিন্যাসে ডিরেক্টরি বিষয়বস্তু প্রদর্শন করা হয়. দ্য -f ফাইল পূর্ণ পাথ দিতে গাছ বলে. যেহেতু আমাদের এর অবস্থান বা পিতামাতার অবস্থান সম্পর্কে কোনও ধারণা নেই, ফাইল সিস্টেম রুট থেকে অনুসন্ধান করা ভাল / পুনরাবৃত্তভাবে নিচের দিকে.তারপরে আমরা আমাদের শব্দটি হাইলাইট করার জন্য আউটপুটটি গ্রিপে প্রেরণ করি, postgis-2.0.0

যখন find কমান্ড পৌনঃপুনিকভাবে ডিরেক্টরি ট্রি তর্ক করার সহজ উপায়, অন্য উপায় আছে এবং বিশেষ করে ইতিমধ্যে তা করার ক্ষমতা আছে ডিফল্টরূপে উবুন্টু সঙ্গে আসা দুটি স্ক্রিপ্টিং ভাষা.

বাশ

bash একটি খুব সুন্দর আছে globstar ডিরেক্টরি ট্রি রিকার্সিভ ট্র্যাভেরসাল জন্য করতে পারবেন, যা শেল বিকল্প. আমরা সব করতে প্রয়োজন কিনা আইটেম জন্য পরীক্ষা করা হয় ./**/* সম্প্রসারণ একটি ফাইল এবং এটি পছন্দসই টেক্সট রয়েছে কিনা:

bash-4.3$ for f in ./**/* ;do [ -f "$f" ] && [[ "$f" =~ "postgis-2.0.0" ]] && echo "$f"; done ./testdir/texts/postgis-2.0.0

পার্ল

পার্ল ডিরেক্টরি ট্রি রিকার্সিভ ট্র্যাভেরসাল সম্পাদন করতে পারবেন, যা মডিউল, খুঁজে, এবং সাবরুটিন মাধ্যমে তাদের উপর নির্দিষ্ট কর্ম সঞ্চালন করা হয়েছে. একটি ছোট স্ক্রিপ্ট দিয়ে, আপনি ডিরেক্টরি ট্রি অতিক্রম করতে পারেন, পছন্দসই স্ট্রিংযুক্ত ফাইলগুলি অ্যারেতে ধাক্কা দিতে পারেন এবং তারপরে এটি মুদ্রণ করতে পারেন:

#!/usr/bin/env perluse strict;use warnings;use File::Find;my @wanted_files;find(     sub{          -f $_ && $_ =~ $ARGV[0]                 && push @wanted_files,$File::Find::name     }, ".");foreach(@wanted_files){    print "$_\n"}

এবং কিভাবে এটি কাজ করে:

$ ./find_file.pl  "postgis-2.0.0"                                                       ./testdir/texts/postgis-2.0.0

পাইথন

পাইথন উবুন্টু বিশ্বের খুব ব্যাপকভাবে ব্যবহার করা হয় যে অন্য স্ক্রিপ্টিং ভাষা. বিশেষত, এটি আছে os.walk() আমাদের উপরে তর্ক ডিরেক্টরি ট্রি হিসাবে একই কর্ম সঞ্চালন এবং পছন্দসই স্ট্রিং ধারণ করে ফাইল তালিকা প্রাপ্ত করতে পারবেন, যা মডিউল.

এক মাছ ধরার নৌকা হিসাবে এই তাই করা যেতে পারে:

$ python -c 'import os;print([os.path.join(r,i) for r,s,f in os.walk(".") for i in f if "postgis-2.0.0" in i])'                                                                         ['./testdir/texts/postgis-2.0.0']

সম্পূর্ণ স্ক্রিপ্ট তাই দেখতে হবে:

#!/usr/bin/env pythonimport os;for r,s,f in os.walk("."):    for i in f:        if "postgis-2.0.0" in i:            print(os.path.join(r,i))

$ find . -type f | grep IMG_20171225_*
দেয়
./03-05--2018/IMG_20171225_200513.jpg
কমান্ডের পরে বিন্দু find একটি সূচনা পয়েন্ট বলা হয়,
সুতরাং-বর্তমান ফোল্ডার,
নাম ফিল্টার মাধ্যমে "পাইপ" (=ফিল্টার) IMG_20171225_*

‘সনাক্ত’ কমান্ডটি ঠিক আছে, আপডেটডবিকমান্ড ব্যবহার করে প্রথমে লোকেটেডবি আপডেট করুন

এটি ইতিমধ্যে ইনস্টল করা হলে, নতুন ফাইলের নাম আর পোস্টগিস-2.0.0 নাও হতে পারে. সাধারণত প্যাকেজ পরিচালকদের মাধ্যমে ইনস্টলেশনের পরে, এক্সিকিউটেবলগুলি $পাথ ফোল্ডারগুলির মধ্যে একটিতে থাকবে, অবস্থানটি দেখতে কোন পোস্টগিস চেষ্টা করুন এটা কিছুই ফেরৎ, শুধুমাত্র তারপর আপনি নিজে ফাইল অবস্থান জন্য হওয়া উচিত.