সমস্ত উত্স ফাইলগুলি কীভাবে তালিকাভুক্ত করবেন (* .c, * .cpp, * .h)


15

আমি উত্স ফাইলগুলি (* .c, * .cpp, *। H) সন্ধান করতে চাই যা লিনাক্স / মিনিজিডাব্লু / সাইগউইন এবং সমস্ত সাব ডিরেক্টরিতে পুনরাবৃত্তভাবে ধারণ করে।

আমার বেসিক ধারণাটি ব্যবহার করছে findএবং grep। তবে একটি নিয়মিত এক্সপ্রেশন তৈরি করা যা প্রদত্ত ফাইলের নামটি চেক করতে পারে * *c, * .cpp, বা * .h সহজ নয়। আপনি আমাকে সাহায্য করতে পারে?

উত্তর:



4
find -regex '.*/.*\.\(c\|cpp\|h\)$'

$কমান্ডের শেষে কী করে ?
আলী

1
@ অলি: এটি রেখার শেষ প্রান্তে রেজেক্সকে নোঙ্গর করে (এটি foo.cpp.oldউদাহরণস্বরূপ নামযুক্ত ফাইলগুলি অনুসন্ধান করা বাধা দেয় )।
ডেনিস উইলিয়ামসন

1

আমি ব্যবহার করব:

find . -regex '.*\.\(c\|cpp\|h\)$' -print

1
আমার ম্যাকবুকটিতে স্ক্রিপ্টটি ছাড়া -Eকিছু খুঁজে পাচ্ছে না। এটিকে আরও পোর্টেবল করার জন্য আপনার প্রয়োজন হতে পারে একটি (EE) প্রসারিত) যেমন find -E . -regex '.*\.(c|h|cpp)' -print। ;-)
পাম্বদা

1

দ্রুত এবং নোংরা, এবং ডিরেক্টরি নাম এড়ানো:

find . -type f -name *.[c\|h]

2
এই কমান্ডটিতে তিনটি সমস্যা রয়েছে: 1. এটি *.cppফাইলগুলি খুঁজে পাবে না । ২. এটি *.|ফাইলগুলি সন্ধান করবে । ৩. বর্তমান ডিরেক্টরিতে যদি ম্যাচের ফাইল আছে তবে গ্লোবটি প্রসারিত হবে। উদ্ধৃতি তা প্রতিরোধ করে।
ডেনিস


0

আমি ম্যাক প্রো ব্যবহার করি যা ব্যাশে কাজ করে। তবে প্রতিবার আমি কমান্ড লাইনে টাইপ করি:

find -name

এটি অবৈধ বিকল্প বলে। সুতরাং আমি এটিকে কেবল সরলীকৃত করেছি:

find *.c *.cpp *.h

এবং এটি সত্যিই কাজ পাওয়া গেছে!

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