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


19

আমার কাছে একটি ফোল্ডার myfolderরয়েছে যা ফাইল / ফোল্ডারগুলির একটি বিশাল শ্রেণিবিন্যাস ধারণ করে।
এই ফোল্ডারের মধ্যে সমস্ত এক্সিকিউটেবল ফাইলগুলি কীভাবে খুঁজে পাবেন?

উবুন্টুতে এটি কাজ করে: find . -executable -type f

তবে ম্যাক ওএস এক্স ম্যাভারিকস (যা এটি ব্যবহার করে bash) এটি পেতে ব্যর্থ হয়:

find: -executable: unknown primary or operator

উত্তর:


30

এটি এক্সিকিউটেবল বিট সেট সহ সমস্ত ফাইল (সিমলিঙ্ক নয়) সন্ধান করবে:

find . -perm +111 -type f

এই হবে এছাড়াও symlinks (যা প্রায়ই সমানভাবে গুরুত্বপূর্ণ হয়) এটি

find . -perm +111 -type f -or -type l

কমান্ডটি কীভাবে কাজ করে তা যদি এটি সুস্পষ্ট না হয়:

  • find স্পষ্টতই সন্ধানের প্রোগ্রামটি (:
  • .( .= বর্তমান ডিরেক্টরি) সন্ধান শুরু করতে ডিরেক্টরি বোঝায়
  • -perm +111= এক্সিকিউটেবল বিটস সেটগুলির সাথে ( +অর্থ "এই বিটগুলির মধ্যে যে কোনও একটি", 111মালিক, গোষ্ঠী এবং যে কারও জন্য এক্সিকিউটেবল বিটের অষ্টাল)
  • -type fটাইপ মানে একটি ফাইল
  • -or বুলিয়ান ও
  • -type lমানে টাইপটি প্রতীকী লিঙ্ক

2
লিঙ্কটি নয়, লিঙ্কযুক্ত নয়, ফাইলটির পরিসংখ্যান ফিরিয়ে আনার জন্য যে কোনও কল করার -Lপরিবর্তে আপনি ব্যবহার করতে পারেন । -or -type lstatfind
ইয়ান সি

এই পদ্ধতির সাথে আমি যে সমস্যাটি পেয়েছি তা হ'ল যে কোনও ফাইলের চালানোর অনুমতি থাকতে পারে। উদাহরণস্বরূপ, আপনি উইন্ডোজ থেকে কিছু পাঠ্য ফাইল ডাউনলোড করার পরে অনুমতিটি গণ্ডগোল হয়।
ইভান জেড জিয়াও

5

আমি আয়ানের উত্তর কাজ (10.6.8) করতে পারিনি, তবে, নিম্নলিখিতগুলি প্রত্যাশিত ফলাফল দিয়েছে:

find . -type f -perm +0111 -print

আপডেট সম্পাদনা করুন

এটিও কাজ করে বলে মনে হচ্ছে!

find . -type f -perm +ugo+x -print

আমার অনুমান "এক্স" ব্যবহারকারী / গোষ্ঠী / অন্যান্য নির্দিষ্টকরণ ছাড়াই অর্থহীন।


প্রতীকী বাক্য গঠনটি অবশ্যই নতুন হতে হবে - এটি নির্দেশ করার জন্য ধন্যবাদ। আমি আমার উত্তর আপডেট করেছি যাতে এটি অষ্টাল ব্যবহার করে এবং পুরানো ওএস এক্স সংস্করণের সাথে পিছনের দিকে সামঞ্জস্যপূর্ণ।
আয়ান সি

অদ্ভুতভাবে যথেষ্ট, 10.6 ম্যানপেজের যে অংশটি আপনি উদ্ধৃত করেছেন ঠিক তার মতোই .... যা আমাকে আরও গভীর খনন করতে এবং হ্যাকটি কী চলছে তা দেখার জন্য যথেষ্ট ছিল। উপরে আমার প্রতিক্রিয়া সংশোধন।
কেন্ট

2
উপসংহার: বিডিএস কমান্ড সিনট্যাক্সটি অদ্ভুত।
আয়ান সি

3

ওএস এক্স-এ সন্ধানের জন্য ম্যান পৃষ্ঠা থেকে :

 -perm [-|+]mode
         The mode may be either symbolic (see chmod(1)) or an octal number.  If the mode is symbolic, a
         starting value of zero is assumed and the mode sets or clears permissions without regard to the
         process' file mode creation mask.  If the mode is octal, only bits 07777 (S_ISUID | S_ISGID |
         S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO) of the file's mode bits participate in the comparison.
         If the mode is preceded by a dash (``-''), this primary evaluates to true if at least all of
         the bits in the mode are set in the file's mode bits.  If the mode is preceded by a plus
         (``+''), this primary evaluates to true if any of the bits in the mode are set in the file's
         mode bits.  Otherwise, this primary evaluates to true if the bits in the mode exactly match the
         file's mode bits.  Note, the first character of a symbolic mode may not be a dash (``-'').

সুতরাং আপনার প্রয়োজন:

find . -type f -perm +0111 -print

মনে রাখবেন যে ওএস এক্স বিএসডি-ভিত্তিক , লিনাক্স ভিত্তিক নয়, সুতরাং লিনাক্স বিতরণে আপনি যে জ্ঞানু কমান্ড ব্যবহার করেন (যার findমধ্যে একটি হ'ল) ​​ওএস এক্স-তে যেমন হয় তেমনটি হয় না। এটি নয় শেল পার্থক্য, এটি একটি অপারেটিং সিস্টেম / অপারেটিং সিস্টেম ইউটিলিটি সরঞ্জামের পার্থক্য।


1

একটি খুব পুরানো প্রশ্ন, আমি সচেতন, কিন্তু সমাধানের সন্ধানে আমি আরও ভাল উত্তর পেয়েছি found

"সন্ধান করুন" ব্যবহার করে মুখ্য সমস্যা হ'ল এটি এক্সিকিউটযোগ্যের জন্য কোনও অ্যাট্রিবিউট সেটের উপর নির্ভর করে, এমনকি যদি এই অ্যাট্রিবিউটটি অ-এক্সিকিউটেবল ফাইলের জন্য সেট করা থাকে।

MacOS একটি সহজ সামান্য কমান্ড-লাইন সরঞ্জাম " file" নিয়ে আসে, যা ফাইলের তথ্য প্রদর্শন করে, উদাহরণস্বরূপ:

$> file *

Distribution:             directory
SomeFile.icns:            Mac OS X icon, 3272878 bytes, "ic09" type
MyPicture.png:            PNG image data, 1024 x 1024, 8-bit/color RGBA, non-interlaced
NSHelpers.pas:            Algol 68 source text, ASCII text
myProgram:                Mach-O 64-bit executable x86_64

আপনি দেখতে পাচ্ছেন, 'মাইপ্রোগ্রাম' একটি এক্সিকিউটেবল, এবং দুর্দান্তভাবে নির্দেশিত indicated যেহেতু পুরাতন 32 বিট এক্সিকিউটেবলের সাথে "এক্সিকিউটেবল" শব্দটিও থাকবে, নিম্নলিখিতটি সমস্ত সত্য নির্বাহযোগ্য (বাইনারি) তালিকাভুক্ত করা উচিত:

file * | grep "executable"

আশা করি একই প্রশ্নের উত্তর খুঁজতে চাইলে কারও পক্ষে এটি কার্যকর হবে।

দ্রষ্টব্য: fileউপ-ডিরেক্টরিগুলির মাধ্যমে পুনরাবৃত্তি করার জন্য কোনও ফাংশন আছে বলে মনে হয় না।

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