ফোল্ডার এবং সাব ফোল্ডারগুলিতে .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.