ফোল্ডার এবং সাব ফোল্ডারগুলিতে .sql এক্সটেনশান সহ সমস্ত ফাইল সন্ধান করুন


17

আমি ফোল্ডার এবং সাব-ফোল্ডারে (পুনরাবৃত্তি) .sql এক্সটেনশন সহ সমস্ত ফাইল সন্ধান করতে চাই।

কিভাবে আমি এটি করতে পারব?

উত্তর:


29

অথবা ...

find $directory_name -name \*.sql

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

find / -name \*.sql

অথবা

find ~ \*.sql

(যেখানে / / বাড়ির / আপনার_র ব্যবহারকারী নাম / সমান হয়), বা ...

find /usr/local/share/ \*.sql

এবং তাই এগিয়ে।


2

কমান্ড লাইনে এটি চালান:

cd / && find | grep '\.sql$'

আপনি যে ডিরেক্টরিটি অনুসন্ধান করতে চান তাতে '/' পরিবর্তন করুন।

findকমান্ড (অতিরিক্ত অপশন ব্যবহার করে), grep ছাড়া কাজের সাধা করতে সক্ষম হয়, কিন্তু আমি উপরে ব্যবহার আরও বেশি সুবিধাজনক পাবেন।

ক্রমানুসারে উপরের আদেশটি:

  1. বর্তমান ডিরেক্টরিটি মূল ডিরেক্টরিতে পরিবর্তন করে ( cd /)
  2. বর্তমান ডিরেক্টরিতে ( find) এর নীচে এবং সমস্ত ফাইল এবং ডিরেক্টরি তালিকাবদ্ধ করে
  3. '.Sql' ( | grep '\.sql$') দিয়ে শেষ হয় এমন কোনও কিছুর জন্য ফাইল এবং ডিরেক্টরিগুলি ফিল্টার করে

ধন্যবাদ, আপনি এটি ব্যাখ্যা করতে পারেন? আপনি গ্রেপ ব্যবহার করছেন এবং এটির ফলাফল খুঁজে পাচ্ছেন?
খালি

তদ্বিপরীত, আসলে। আমি এটির ফলাফল আউটপুট এবং গ্রেপ-এ পাস করছি। আমি উপরে আরও বিস্তারিত ব্যাখ্যা যুক্ত করেছি।
বারবারোসা

এই একটি ম্যাক কাজ করবে? আমি চেষ্টা করেছি 'খুঁজে | গ্রেপ '। .sql $' এবং এটি ব্যবহারের সাহায্যের তথ্য আউটপুট করে।
খালি

সন্ধান একটি শক্তিশালী সরঞ্জাম এবং গ্রেপ থেকে আপনাকে আউটপুটটি পাইপ করার দরকার নেই pipe এটি একটি দুর্দান্ত লিঙ্ক - বিষয়বস্তু। Hcfl.edu/plock/unix/findCmd.htm
প্যান্থার

1
findইতোমধ্যে ফিল্টার করার ক্ষমতা রয়েছে
এনজোটিব

1

আমি জানি যে এটি একটি পুরানো পোস্ট, তবে আমি এটিতে বেশ নতুন এবং আমি একটি ডিরেক্টরি এবং এর শিশুদের উপ-ডিরেক্টরিতে একটি নির্দিষ্ট বর্ধনের সমস্ত ফাইল সন্ধান করার একটি সহজ উপায় খুঁজে পেয়েছি। আচ্ছা আপনি প্রথম নেভিগেট parent Directoryতারপর find . -name '*.sql'এবং যে আপনার সাথে সব ফাইল পাবেন .sql ডিরেক্টরি এবং তার সাব ইন এক্সটেনশান।

আমার ক্ষেত্রে আমি ডিরেক্টরি এবং এর উপ-ডিরেক্টরিগুলির সমস্ত .xML ফাইলগুলি মুছতে চেয়েছিলাম , তাই আমি আরও কী করলাম তা হ'ল আমি এখানে যেমন সরিয়েছিfind . -name '*.xml' | xargs rm

আশা করি এই সাহায্য কারও :)


2
find-deleteআদেশ বুঝতে পারে । জড়িত হওয়ার দরকার নেই rm। অথবা আপনি -execকোনও পাইপের মাধ্যমে প্রদীপ ছাড়াই সরাসরি নির্দেশ করতে কমান্ডটি ব্যবহার করতে পারেন এবং xargs
ডেভিড ফোস্টার

0
locate -br \\.sql$ | egrep '^/folder/path/'

যদি এটি ইনস্টল না করা থাকে তবে এর সাথে আগে এটি ইনস্টল করুন:

sudo apt install mlocate

এটির জন্য একটি আপ-টু-ডেট mlocate.dbউদাহরণ প্রয়োজন যা উবুন্টু-তে বক্স সেট করা নেই (আমি ব্লিভ)। এছাড়াও, কেন না সহজ locate '/folder/path/*.sql'?
ডেভিড ফোস্টার

@ ডেভিডফোরস্টার আমি আপনার উল্লেখ অনুসারে চেষ্টা করেছি কিন্তু এটি কাজ করে না, আমার ধারণা locateegrep
রেগেক্সের রেগেক্স

locate/folder/path/*.sqlনিয়মিত প্রকাশের মতো নয়, গ্লোব এক্সপ্রেশনগুলির সাথে মেলে ।
ডেভিড ফোস্টার

দুঃখিত, তবে man locateআমার কাছ থেকে -r, --regexp REGEXP - Search for a basic regexp REGEXPতাই আমি ধরে নিয়েছি এটি একটি রেজেক্স। যাইহোক আমি আপনার "গ্লোবাল এক্সপ্রেশন" চেষ্টা করেছিলাম কিন্তু কাজ করে না, আমি দুঃখিত
ভিজার ফায়ার

অপশন সিঙ্কপোসিস থেকে চেরি-বাছাই শুরু করার আগে দয়া করে বর্ণনার কমপক্ষে প্রথম কয়েকটি বাক্য পড়ুন: "যদি --regexনির্দিষ্ট PATTERNনা করা হয় তবে সেগুলিতে গ্লোব্বিং অক্ষর থাকতে পারে।" ( উত্স )
ডেভিড ফোস্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.