আমি কীভাবে ম্যাক ওএসএক্স টার্মিনালে ফাইল নাম দ্বারা একটি ফাইল সন্ধান করব?


118

আমি ফাইলের নাম আমার ম্যাকবুক একটি ফাইল খুঁজে পেতে চাই: abc.dmg। আমি স্পটলাইট ব্যবহার করার চেষ্টা করেছি, কিন্তু এটি এটি খুঁজে পায় না। আমি যখন অনুসন্ধান করার চেষ্টা করেছি এবং ব্যবহার করেছি: তখন আমার find -name abc.dmg -path /ত্রুটি ফিরে পেয়েছিল।

ম্যাক ওএসএক্স টার্মিনালে ফাইন্ড কমান্ডের সাহায্যে ফাইল নাম দ্বারা একটি ফাইল সন্ধানের উপযুক্ত বাক্য গঠন কী?


1
@ ভিএক্সজেসনসভিভি অ্যাপল প্রশ্নগুলি সুপার ব্যবহারকারীর জন্য 100% বিষয়বস্তুতে রয়েছে এবং অ্যাপলের প্রতিটি প্রশ্ন সেখানে স্থানান্তরিত হওয়ার কোনও প্রয়োজন নেই। আইফোন বা আইপ্যাডের প্রশ্নগুলি যখন / প্রয়োজন হলে সরানো হবে।
বাইনারিমিসফিট

এটি অফ-টপিক হওয়ার এত কারণ ছিল না, তবে এই সাধারণ বিষয়টির জন্য আরও একটি নির্দিষ্ট বিষয় / সাইট রয়েছে তা সত্য।
VxJasonxV

@ ডিয়াগো: মেটা বা আড্ডা নিয়ে এ নিয়ে কোনও আলোচনা হয়েছে? কেবল ভাবছি কারণ AFAIK আপেল.এসই খুব শীঘ্রই বিটা থেকে বেরিয়ে আসবে, সুতরাং সবাইকে একই পৃষ্ঠায় পেয়ে ভাল লাগবে।
রবার্ট এস সিয়াসসিও

1
@calavera। মোটামুটি পুরানো আলোচনা তবে প্রাসঙ্গিক এখানে পাওয়া যাবে । অ্যাপল এসই, উবুন্টু এসই এবং লিনাক্স এসই সুপার ব্যবহারকারীদের প্রশংসা করার জন্য সমস্ত কিছু রয়েছে তবে আমরা কোনওভাবেই ব্যবহারকারীদের সরানোতে বাধ্য করতে চাই না। আমি বরং অ্যাপলটি এখানে অ্যাপল প্রশ্ন জিজ্ঞাসা করতে পছন্দ করি, কারণ আমি 3 টি ভিন্ন অপারেটিং সিস্টেম ব্যবহার করি। আমার যদি খুব নির্দিষ্ট প্রশ্ন থাকে তবে আমি এটি আরও বিশেষায়িত সাইটে জিজ্ঞাসা করব।
বাইনারিমিসফিট

উত্তর:


163

এর সরল আকারে, findএকটি প্যারামিটার নেয়: পথ। এর প্রকৃত দরকারী আকারে, এটি সংকীর্ণ মানদণ্ড অনুসরণ করে পথ গ্রহণ করে।

সুতরাং, আপনি চান:

  • find (কার্যক্রম)
  • / (পথ), এবং
  • -name abc.dmg (মানদণ্ড).
find / -name abc.dmg

12
পুরো ড্রাইভ অনুসন্ধান করার সময় আপনি অনুমতি অস্বীকার প্রকারের ত্রুটিগুলি পেতে পারেন তবে আপনি যদি ফাইলটি কোনও সীমাবদ্ধ ফোল্ডারে রাখার প্রত্যাশা না করেন তবে এগুলি উপেক্ষা করা যেতে পারে। যদি তাই হয় তবে sudo Find / -name abc.dmg ব্যবহার করুন
ক্রিস নাভা

চেষ্টা করেছেন, কিন্তু কোনও ফল হয়নি।
এসপিআরবিএনএন

6
সম্ভবত তখন, আপনার কম্পিউটারে abc.dmg নামে একটি ফাইল নেই। আপনি অনুসন্ধানের মামলাটিকে সংবেদনশীল করতে নাম-এর পরিবর্তে -নাম ব্যবহার করতে পারেন। আমি অত্যন্ত সন্দেহ করি যে আপনি আসলে "abc.dmg" সন্ধান করছেন, এবং সেই (সম্ভবত) সত্য হিসাবে, সত্যিকারের বিবরণ না রেখে আপনার সমস্যাটি কী তা আপনাকে বলা মুশকিল।
VxJasonxV

2
@ রেক্সট: যদি এটি খুঁজে পাওয়া যায় না তবে এটি সেখানে নেই ...
রবার্ট এস সিয়াসসিও

5
ওপি রিপোর্টটি প্রশ্নের পাঠ্যটিতে খোঁজ নেওয়ার চেষ্টা করেছে তা প্রদত্ত, এটি বিবেচনা করার মতো যে find বিষয়গুলির পক্ষে যুক্তির ক্রমটি । অবশ্যই যদি হয় find [path]+ [selection, grouping, and actions]
dmckee

23

find . -name '*.csv'উদাহরণস্বরূপ ওয়াইল্ডকার্ড সহ আমার জন্য কাজ করেছে। ওপি find . -name '*.dmg'তার বর্তমান ডিরেক্টরিটি চেক করতে ব্যবহার করতে পারে , ধরে নিয়েছিল যে তিনি রয়েছেন /



6

আপনি locateকমান্ডটি ব্যবহার করতে পারেন ।

locate abc.dmg

2
osxট্যাগটি নোট করুন । স্লোকটি ডিবি ডিফল্টরূপে পপুলেশন হয় না।
VxJasonxV

এটি চেষ্টা করেছিলাম, ডাটাবেস তৈরির পরে, তবে কোনও ফলাফল হয়নি।
এসপিআরবিএনএন

যদি locateএবং mdfindউভয়ই ব্যর্থ হয় তবে সম্ভাবনাগুলি ফাইলটি আপনার মেশিনে নেই। অথবা এটির নামকরণ কীভাবে আপনি এটির নাম বলে মনে করেন। সমস্ত ডিএমজি অনুসন্ধান করা আপনার পরবর্তী পদক্ষেপ হতে পারে?
পিলম্যান

3

সবচেয়ে সহজ উপায় (যা আমি নিশ্চিত যে আপনি ইতিমধ্যে চেষ্টা করেছেন, তবে ওহে, যাইহোক আমাকে এটি থ্রেডে যুক্ত করতে দিন) কোনও অনুসন্ধানক উইন্ডোর উপরের ডানদিকে অনুসন্ধান বাক্সে abc.dmg প্রবেশ করাতে হবে, তারপরে "ফাইল নির্বাচন করুন" নাম বার্তা অনুসন্ধান বারের বিকল্পগুলি থেকে প্রদর্শিত হবে।

টার্মিনালের দরকার নেই।

এছাড়াও মনে রাখবেন যে স্পটলাইট কন্ট্রোল প্যানেলে উল্লিখিত স্পটলাইট কেবল সূচক ডিরেক্টরি এবং abc.dmg সেই ডিরেক্টরিগুলির মধ্যে একটিতে নাও থাকতে পারে।

আমি ভুল হলে আমাকে সংশোধন করুন, তবে আমি মনে করি কী ফলাফল খুঁজে বার করতে হবে তা ফাইন্ড কমান্ডের জানা দরকার:

find / -name abc.dmg -print

... টার্মিনালে কোনও ফলাফল মুদ্রণ করা উচিত (অনুমতি ত্রুটি সহ)।

আপনি যদি অনুমতি ত্রুটিগুলি না চান এবং অন্যান্য ব্যবহারকারী ডিরেক্টরি অনুসন্ধান করতে চান তবে:

sudo find / -name abc.dmg -print

2

প্রাসঙ্গিক ফাইলটি দ্রুত খুঁজে পেতে এবং খোলার জন্য আপনি নিম্নলিখিত কমান্ড লাইন ফাংশনগুলি ব্যবহার করতে পারেন। স্পটলাইট উইন্ডোতে ক্যোরির দীর্ঘ স্ট্রিং টাইপ করার চেয়ে সহজ এটি খুঁজে পাচ্ছি।

নিম্নলিখিত ফাংশন যুক্ত করুন ~/.bash_aliases

# find any item matching search query in file name
spot(){
  mdfind "kMDItemDisplayName=='*$1*'cd";
}

# restrict to files under (recursive) a specific path 
findpaper(){
    mdfind -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd";
}

# default to open the first entry unless 2nd positional argument is given
openpaper(){
    FILEID=$(printf "%sp" ${2:-1})

    open "$(mdfind -name -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd" | sed -n "${FILEID}")"

}

এখন, হয় source ~/.bash_aliasesবা একটি নতুন টার্মিনাল লোড ফাংশন খুলুন। ফাইল নামের সাথে কোথাও শব্দ, পাই এবং 2016 সহ ফাইলগুলি অনুসন্ধান করতে, করুন

spot pie*2016 #or
spot 2016*pie

*অনুসন্ধানের প্যাটার্ন হিসাবে আপনার কোয়েরিতে প্রিপেন্ড বা সংযুক্ত করার দরকার নেই , '*$1*'ইতিমধ্যে আপনার কোয়েরির শুরুতে এবং শেষে ওয়াইল্ড কার্ড এন্ট্রি ট্যাগ করেছে s অতিরিক্ত cdহ'ল সংবেদনশীল fredএবং উপচ্ছন্ন চিহ্নগুলিকে উপেক্ষা করার জন্য, উদাহরণস্বরূপ , ফ্রেডেরিক এবং ফ্রেডেরিক উভয়ই ফিরে আসবে।

findpaperকোনও নির্দিষ্ট পাথ (পুনরাবৃত্তির) অধীনে অনুসন্ধানগুলিকে সীমাবদ্ধ করবে যখন openpaper pie*201কোনও (বা একাধিক ফলাফলের প্রথম) অনুসন্ধান ফলাফল openpaper pie*201 3খুলবে বা তৃতীয় ফলাফল এন্ট্রি খুলবে। ব্যাশ স্ক্রিপ্টগুলি বা অন্যান্য নথি-নথি ফাইল খোলার এড়াতে, আপনি অতিরিক্ত অনুসন্ধান বৈশিষ্ট্য দ্বারা ফাইলের সামগ্রীগুলি সীমাবদ্ধ করতে পারেন। দেখুন ফাইলগুলির মেটাডেটা ক্যোয়ারী এক্সপ্রেশন সিনট্যাক্স এবং https://ss64.com/osx/mdfind.html অন্যান্য অনুসন্ধান অপারেটর ব্যবহার করার জন্য।


অসাধারণ! এটি স্টিলিং: ডি
18

0

/ থেকে মূল হিসাবে আপনার ডিস্কের প্রতিটি ফাইলের একটি তালিকা ক্যাপচার করুন

sudo find / &> ~/file-list.txt
sudo chown $(whoami) ~/file-list.txt

পুরো ড্রাইভ অনুসন্ধান করতে গ্রেপের মাধ্যমে পুরো ফাইলটি বিড়াল করুন:

cat ~/file-list.txt | grep abc.dmg

কেবলমাত্র .jpg এবং .dmg ফাইলগুলি দেখানোর জন্য নিয়মিত এক্সপ্রেশন ব্যবহার করুন:

cat ~/file-list.txt | grep -E "(\.dmg|\.jpg)"

ফলাফল:

Applications/Visualisations/CurvedSpaces-forMac.app/Contents/Resources/Textures/paper.jpg

... ইত্যাদি। দুর্ভাগ্যক্রমে সমস্ত মাউন্টড ডিস্কগুলি ক্যাপচার করবে এত ভাল যে সময় মেশিনগুলি তাদের প্রচুর লিঙ্কগুলি বের করে দেয়। সুতরাং আমি অন্য উইন্ডোতে চালিত watch tail -n 10 ~/file-list.txtযা আমাকে দেখায় যে এটি আমার মারাত্বক হ্যাকটি কোথায়?


1
খারাপ অভ্যাস বা কিছু মন্তব্য যা প্রাপ্য: (1) sudo find / > ~/file-list.txtপুরো শেলটিকে রুট হিসাবে চালানোর চেয়ে ভাল বলে মনে হয়। (2) find *লুকানো (বিন্দু) অবজেক্টগুলিতে (যদি থাকে) এড়িয়ে যাবে /। (৩) &>বাশিজম। (4) এর অকেজো ব্যবহার cat। (5) grep abc.dmgযেমন মুদ্রণ করবে /foo/bar/123abcXdmg456/baz/whatever। // আপনার উত্তরটি এই থ্রেডে নিয়ে আসে এমন একটি ভাল জিনিস (এবং অন্য উত্তর দেয় না) এমন পদ্ধতি যা ব্যবহারকারী findএকবার চালায় এবং তারপরে পুনরায় ফাইল সিস্টেম (গুলি) অনুসন্ধান না করে একাধিকবার সংরক্ষিত ফলাফল পুনরায় ব্যবহার করে। যদিও এই সম্ভাব্য সুবিধাটি উচ্চারণ করা হয় না।
কামিল ম্যাকিয়েরোভস্কি

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