পিডিএফ ফাইলগুলি সনাক্ত করতে লিনাক্সে কমান্ড সন্ধান করুন


11

আমার লক্ষ্য হ'ল দূরবর্তী মেশিনে সমস্ত পিডিএফ ফাইল সন্ধান করা, তাই আমি দরকারী কমান্ডটি অবলম্বন করি find। সুতরাং আমি টাইপ

~ * .পিডিএফ সন্ধান করুন
অথবা
~ "* .pdf" সন্ধান করুন
এবং আমি কিছুই পাই না। আমি আমার মেশিনেও একই কাজ করি এবং কিছুই পাই না। আমি আমার মেশিনের মেনু থেকে নিয়মিত অনুসন্ধান করি এবং আমি বেশ কয়েকটি পিডিএফ ফাইল খুঁজে পাই। কেউ দয়া করে আমাকে বলবেন আমি কী ভুল করছি?


11
আপনি যদি ভাল প্রতিক্রিয়া চান তবে আপনার নেতিবাচক মতামতগুলি আপনার প্রশ্নের বাইরে রাখুন। সম্পর্কিত গল্পে, findঅকেজো থেকে দূরে।
উইলহেলমটেল

8
অবশ্যই আপনার বাকস্বাধীনতার অধিকার রয়েছে। তবে আপনি একটি ভাল প্রতিক্রিয়া চান, তাই না? না, আপনার পক্ষে ভাল গঠনমূলক প্রতিক্রিয়ার অধিকার নেই। এটি একটি সুবিধা।
উইলহেমটেল

2
একজন খারাপ কর্মী সর্বদা তার সরঞ্জামগুলিকে দোষ দেয়। অন্য কথায়, খাঁটি পিবিসিএকে এখানে।
পাস্কাল থিভেন্ট

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

1
@ মিশেল আমি এখানে কাউকে দোষ দেয়নি; বা, বরং, আমি এখানে দোষারোপকারী কেউ নই। আমি findস্বজ্ঞাতও বলিনি । আমি সম্ভবত খুব ভাল সুরে একই কথা বলতে পারি; কখনও কখনও আমি (নির্বোধ) নেতিবাচক মন্তব্য প্রতিক্রিয়া।
উইলহেমটেল

উত্তর:


30

findঅকেজো থেকে দূরে। আপনি এটি সঠিকভাবে ব্যবহার করছেন না।

চেষ্টা করে দেখুন:

find . -type f -iname '*.pdf'


@ মার্টিন - সাহায্য করার জন্য খুশি, ঠিক উত্তর হিসাবে প্রশ্নটি চিহ্নিত করতে ভুলবেন না!
মিচ ডেম্পসে

@ স্টেপেনচেগ হ্যাঁ, আপনি কেন ইন্টারনেট নিচে নেবেন এবং একটি হার্ড কপি মুদ্রণ করবেন না?
বোবোবোবো

9

সন্ধানকারীদের জন্য ডকুমেন্টেশনটি একবার দেখুন । findকমান্ড একটি অবিশ্বাস্যভাবে শক্তিশালী এক এবং, অতএব, একটি কিছুটা জটিল ইন্টারফেস আছে। আপনি যা চান তা করতে পারেন:

find . -type f -iname '*.pdf' 

উপরের কমান্ডটির অর্থ "অভ্যন্তরীণ সন্ধান করুন type টাইপ ফাইলের এন্ট্রিগুলির সাথে কেস সংবেদনশীল নামের সাথে মেলে * .পিডিএফ (এবং এই জাতীয় ম্যাচের নাম মুদ্রণ করুন")। ফাইন্ড কমান্ডটি প্রকৃতপক্ষে পাওয়া যায় এমন ফাইলগুলিতে কমান্ড সম্পাদন করতে ব্যবহার করা যেতে পারে (ফাইলের নাম মুদ্রণের পরিবর্তে বা এর পরিবর্তে)। যদিও আপনার উদ্দেশ্যগুলির জন্য, আপনি নিজেকে সনাক্ত আদেশের সাথে নিজেকে আরও স্বাচ্ছন্দ্যবোধ করতে পারেন, যা - ধরে নেওয়া যে আপনি আপডেটবিড ব্যবহার করে সনাক্ত করা ডেটাবেস তৈরি করেছেন - ফাইলগুলি সন্ধান করা খুব সহজ করে তোলে। উদাহরণ স্বরূপ:

locate '*.pdf'

আপনি সনাক্ত করতে পারবেন যে কমান্ডটি ফাইন্ড কমান্ডের চেয়ে সাধারণত দ্রুত হয় কারণ এটি ফাইলের নামগুলির একটি সূচক (অবস্থানের ডেটাবেস) ব্যবহার করে, যেখানে প্রতিটি অনুরোধের জন্য শ্রেণিবদ্ধ পদচারণ করবে find


6

আপনি কেবল সেই শিকারীটি অনুপস্থিত যা বলছে যে আপনি যা অনুসন্ধান করছেন (উদা -name।)

নাম অনুসারে হোম ডিরেক্টরিতে সন্ধান করতে:

find ~ -name \*.pdf

নোট করুন যে ওয়াইল্ডকার্ডকে এড়িয়ে চলতে *হবে যাতে শেলটি তার গায়ে হাত দেওয়ার আগে এটি ব্যাখ্যা করে না। ব্যবহার '*.pdf'এবং "*.pdf"এর একই প্রভাব থাকবে \*.pdf

সংবেদনশীলতার সাথে কেস সন্ধান করতে:

find ~ -iname \*.pdf

ফলাফলগুলিকে কেবল ফাইলগুলিতে ছাঁটাই করতে (নামের এক্সপ্রেশনটি সম্ভবত আপনার জন্য এটি যত্নশীল হবে তবে কেবল আপনার যদি অদ্ভুত-নামযুক্ত ডিরেক্টরি রয়েছে):

find ~ -type f -iname \*.pdf

প্রতীকী লিঙ্কগুলি অনুসরণ করে তা নিশ্চিত করার জন্য (অনুসন্ধানগুলি করার সময় আমি সাধারণত এটি নিজেই করতে চাই):

find ~ -follow -type f -iname \*.pdf

আপনি যে ফাইলগুলি খুঁজে পেয়েছেন তার সাথে কিছু করার জন্য: আপনি স্টাডাউট পুনর্নির্দেশ (উদাহরণস্বরূপ > filenameশেষে ট্যাক্স ) ব্যবহার করে কোনও ফাইলে এটি ফেলে দিতে পারেন, বা -execএকটি কমান্ড চালানোর বিকল্পটি ব্যবহার করতে পারেন (বিশদটির জন্য ম্যান পৃষ্ঠাটি দেখুন)। যদিও পরবর্তী সময়ে প্রতিটি ফাইলে একটি কমান্ড চালায়। xargsকমান্ডটি আপনার পাওয়া ফাইলগুলিকে অন্য কমান্ডের সাথে যুক্তি হিসাবে পাস করার জন্য দ্রুত হয় , একবারে বা বড় অংশগুলি একবারে। উদাহরণস্বরূপ, শিরোনাম ফাইলগুলির মাধ্যমে অ্যাড-হক (তবে আনইন্ডেক্সড) গ্রেপের জন্য:

find ~ -follow -type f -name \*.h | xargs grep -nH "identifier"

এবং একটি চূড়ান্ত এক্সটেনশন, সেই শেষ কমান্ডটি সঠিকভাবে কাজ করতে আপনার যদি ফাইল ও ডিরেক্টরিতে ফাঁকা স্থান থাকে:

find ~ -follow -type f -name \*.h -print0 | xargs -0 grep -nH "identifier"

আসলে, "* .পিডিএফ" প্রসারিত হবে যদি বর্তমান ডিরেক্টরিতে .pdf দিয়ে শেষ হওয়া ফাইল রয়েছে, তাই না? (গৌণ দ্রষ্টব্য)
পিটার জারিক

1
বাশে নেই বাশ ম্যানুয়াল থেকে: "ডাবল উদ্ধৃতিগুলিতে অক্ষরগুলি আবদ্ধ করা [ডলার], [ব্যাককোটি], [পাইপ] এবং ইতিহাসের সম্প্রসারণ সক্ষম হওয়ার পরে [দোল], ব্যতীত সমস্ত অক্ষরের আক্ষরিক মান সংরক্ষণ করে। " এটি নিশ্চিত করার জন্য এটি নিজে চেষ্টা করুন: এর মধ্যে পাঠ্য ফাইল সহ ডিরেক্টরিতে ls "* .txt"।
ওভেন এস

হ্যাঁ, আপনি ঠিক বলেছেন। আমি জানি না আমি কোথা থেকে এই ধারণা পেয়েছি। আমাকে সংশোধন করার জন্য ধন্যবাদ।
পিটার জারিক

3

এই টিউটোরিয়ালটি একবার দেখুন

আমি মনে করি আপনি কি করতে চান

find . -name "*.pdf"

inameভাল হলওয়ে দর্শনের জন্য আপনাকে এ্যাট্রিবিউটটি ব্যবহার করা উচিত
মিচ ডেম্পসে

0

আমি গ্রাইপের মতো অনুসন্ধানটি একত্রিত করতাম

অনুসন্ধান . | গ্রেপ -i ".পিডিএফ"

সম্ভবত শীর্ষ দক্ষ নয়, তবে এটি কাজটি ভাল করে।


এই কাজ করা যেতে পারে findসরাসরি যদি আপনি মাধ্যমে আকাঙ্ক্ষিত, -iregex: find ~ -iregex '.*\.pdf'। সমস্যাটি হ'ল, findপ্যাটার্নটিতে এমনভাবে চিকিত্সা করা হয় যেমন এর সর্বদা ^সামনে এবং $পিছনে থাকে তবে আপনার প্যাটার্নটি আরও জটিল হওয়া দরকার। এছাড়াও নোট করুন: .আপনার ধাঁচে আসলে একটি একক-অক্ষর ওয়াইল্ডকার্ড, আক্ষরিক সময় নয়।
ওভেন এস

0

আপনার গত x দিনের মধ্যে ডাউনলোড করা ফাইলগুলি সন্ধান করুন

find ~ -type f -iname '*.pdf' -mtime -1

আপনার বাড়ির ~ডিরেক্টরিতে পিডিএফ ফাইলগুলি খুঁজে পাবেন এবং নীচে এবং .pdfউপরের ক্ষেত্রে নিম্নরূপে এক্সটেনশন সহ (i আমি এতে inameথাকি) এবং 1 দিন আগে পর্যন্ত সংশোধন করেছি কারণ আমি যুক্ত করেছি mtime -1; আপনি যদি মাইটাইমে -60 রাখেন তবে এটি সর্বশেষ 60 দিন হবে।


0

"পাওয়া" ফাইলগুলির মধ্যে একটি অনুসন্ধান চালানোর জন্য এই নির্মাণ রয়েছে:

find <dir> -type f -iname <name> -exec grep -H <string> {} \;

"কমান্ডের কমান্ডটি অবশ্যই পালানো"; "স্ট্রিং" রয়েছে এমন ফাইলের মধ্যে লাইন ছাড়াও গ্রেপের জন্য ফাইলের পাথ মুদ্রণের জন্য -H প্রয়োজন is

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