উত্তর:
xargs
আপনি যা চান তা করবে:
git ls-files | xargs cat | wc -l
তবে আরও তথ্যের সাথে এবং সম্ভবত আরও ভাল, আপনি এটি করতে পারেন:
git ls-files | xargs wc -l
grep cpp |
আগে সেখানে আটকে থাকুন xargs
।
git ls-files -z | xargs -0 wc -l
যদি আপনার নামের সাথে ফাঁকা ফাইল থাকে তবে ব্যবহার করুন ।
git ls-files | grep -P ".*(hpp|cpp)" | xargs wc -l
যেখানে গ্রেপ অংশটি আপনি চান কোনও পার্ল রেজেক্স!
git ls-files | grep "\.java$" | xargs wc -l
git diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904
এটি খালি গাছ থেকে আপনার বর্তমান কাজের গাছের মধ্যে পার্থক্য দেখায়। যা আপনার বর্তমান কার্যকারী গাছের সমস্ত লাইন গণনা করতে ঘটে।
আপনার বর্তমান কার্যক্ষম গাছটিতে নম্বর পেতে, এটি করুন:
git diff --shortstat `git hash-object -t tree /dev/null`
এটি আপনাকে একটি স্ট্রিং দেবে 1770 files changed, 166776 insertions(+)
।
git hash-object -t tree /dev/null
।
git diff --stat `git hash-object -t tree /dev/null`
git diff --stat `git hash-object -t tree /dev/null` | tail -1
git diff --shortstat `git hash-object -t tree /dev/null`
শেষ লাইন পেতে ব্যবহার করুন , লেজ প্রয়োজন হয় না।
আপনি যদি এই গণনাটি চান তবে আপনি যদি প্রকল্পের ক্ষেত্রের ধারণা পেতে চান তবে আপনি সিএলওসি ("কোডের লাইন গণনা করুন") এর আউটপুট পছন্দ করতে পারেন , যা আপনাকে ভাষার দ্বারা কোডের উল্লেখযোগ্য এবং তুচ্ছ লাইনের একটি বিভ্রান্তি দেয়।
cloc $(git ls-files)
(এই লাইন সমতূল্য git ls-files | xargs cloc
। এটি ব্যবহার করে sh
এর $()
কমান্ড প্রতিকল্পন বৈশিষ্ট্য।)
নমুনা আউটপুট:
20 text files.
20 unique files.
6 files ignored.
http://cloc.sourceforge.net v 1.62 T=0.22 s (62.5 files/s, 2771.2 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Javascript 2 13 111 309
JSON 3 0 0 58
HTML 2 7 12 50
Handlebars 2 0 0 37
CoffeeScript 4 1 4 12
SASS 1 1 1 5
-------------------------------------------------------------------------------
SUM: 14 22 128 471
-------------------------------------------------------------------------------
আপনাকে প্রথমে সিএলওসি ইনস্টল করতে হবে। আপনি সম্ভবত পারেন ইনস্টল cloc
আপনার প্যাকেজ ম্যানেজার দিয়ে - উদাহরণস্বরূপ, brew install cloc
সঙ্গে Homebrew ।
cloc $(git ls-files)
প্রায়শই উন্নতি হয় cloc .
। উদাহরণস্বরূপ, git ls-files
কোডের 471 লাইন রিপোর্ট সহ উপরের নমুনা আউটপুট । একই প্রকল্পের জন্য, cloc .
পুরো 466,279 টি লাইন রিপোর্ট করে (এবং এটি চালাতে ছয় মিনিট সময় নেয়) কারণ এটি গিট-উপেক্ষা node_modules
ফোল্ডারে নির্ভরতাগুলি অনুসন্ধান করে ।
cloc --vcs git
এই দিনগুলিতে ব্যবহার করতে পারেন , যা খারাপ নামযুক্ত ফাইলগুলি (বা তাদের মধ্যে অনেকগুলি) দিয়ে কিছু কিনার এড়িয়ে চলে।
git ls-files | xargs wc -l
বিপুল সংখ্যক ফাইলের সাথে লেনদেন করার সময় আমি ব্যাচিংয়ের সমস্যার মুখোমুখি হয়েছি , যেখানে লাইন গণনা একাধিক total
লাইনে বিভক্ত হয়ে যাবে ।
প্রশ্ন থেকে টিপস নেওয়া ডাব্লুসি ইউটিলিটি কেন "মোট" দিয়ে একাধিক লাইন তৈরি করে? , সমস্যাটি বাইপাস করার জন্য আমি নিম্নলিখিত কমান্ডটি পেয়েছি:
wc -l $(git ls-files)
বা আপনি যদি কেবল কয়েকটি ফাইল পরীক্ষা করতে চান তবে কোড:
wc -l $(git ls-files | grep '.*\.cs')
wc -l $(git ls-files | find *.m *.h)
wc -l --files0-from=<(git ls-files -z)
। <(COMMAND)
সিনট্যাক্স একটি ফাইল যার বিষয়বস্তু ফল নাম ফেরৎ COMMAND
।
আমার কাছে সর্বোত্তম সমাধানটি যাই হোক না কেন, @ মহামান্য উত্তরটির মন্তব্যে সমাহিত করা হয়েছে। আমি এটিকে এখানে কেবল টানছি যাতে এটি নজরে না যায়। এর কৃতিত্ব @FRoZeN (এবং @ পেফিয়েন্ট) এ যাওয়া উচিত।
git diff --shortstat `git hash-object -t tree /dev/null`
কোনও অতিরিক্ত গোলমাল ছাড়াই কোনও রেপোর ওয়ার্কিং ডিরেক্টরিতে মোট ফাইল এবং লাইনগুলি প্রদান করে। বোনাস হিসাবে, কেবল উত্স কোডটি গণনা করা হয় - বাইনারি ফাইলগুলি ট্যালি থেকে বাদ থাকে।
উপরের কমান্ডটি লিনাক্স এবং ওএস এক্সে কাজ করে it এটির ক্রস প্ল্যাটফর্ম সংস্করণ
git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904
এটি উইন্ডোজেও কাজ করে।
রেকর্ডের জন্য, ফাঁকা লাইন বাদ দেওয়ার বিকল্পগুলি,
-w
/ --ignore-all-space
,-b
/ --ignore-space-change
,--ignore-blank-lines
, --ignore-space-at-eol
সাথে ব্যবহার করার সময় কোনও প্রভাব ফেলবে না --shortstat
। ফাঁকা লাইন গণনা করা হয়।
git mktree </dev/null
বা true|git mktree
বা git mktree <&-
বা :|git mktree
আমাদের মধ্যে কীস্ট্রোক-কাউন্টারে :-) জন্য - একটি অতিরিক্ত খালি গাছ রেপো প্রায় ফ্লোটিং আহত কিছু যাচ্ছে না।
এটি ক্লক 1.68 হিসাবে কাজ করে :
cloc --vcs=git
--vcs
আমার জন্য কাজ করেনি, সম্ভবত এটি সরানো হয়েছিল। cloc .
গিট রেপোতে কাজ করার সময়, ওটিওএইচ।
আমি সেন্টিমিডারের সাথে ঘুরে বেড়াচ্ছিলাম ( http://gooseberrycreative.com/cmder/ ) এবং আমি এইচটিএমএল, সিএসএস, জাভা এবং জাভাস্ক্রিপ্টের লাইনগুলি গণনা করতে চেয়েছিলাম। উপরের কয়েকটি উত্তর কাজ করার সময়, or
গ্রেপের প্যাটার্নটি পায় নি - আমি এখানে পেয়েছি ( /unix/37313/how-do-i-grep- for- মাল্টিপল- পত্রক ) এড়াতে
সুতরাং আমি এখন এটি ব্যবহার করি:
git ls-files | grep "\(.html\|.css\|.js\|.java\)$" | xargs wc -l
আমি নিম্নলিখিত ব্যবহার:
git grep ^ | wc -l
এটি রেগেক্সের জন্য গিট দ্বারা সংস্করণিত সমস্ত ফাইল সন্ধান করে ^
যা একটি লাইনের সূচনা উপস্থাপন করে, সুতরাং এই কমান্ডটি মোট লাইনের সংখ্যা দেয়!
আমি এটা করেছি:
git ls-files | xargs file | grep "ASCII" | cut -d : -f 1 | xargs wc -l
আপনি যদি সংগ্রহস্থলের সমস্ত পাঠ্য ফাইলকে আগ্রহের ফাইল হিসাবে গণনা করেন তবে এটি কাজ করে। যদি কিছু ডকুমেন্টেশন ইত্যাদি বিবেচনা করা হয়, তবে একটি বর্জনীয় ফিল্টার যুক্ত করা যেতে পারে।
গিথুব https://github.com/flosse/sloc এ এই সরঞ্জামটি আরও বর্ণনামূলক উপায়ে আউটপুট দিতে পারে। এটি আপনার উত্স কোডের পরিসংখ্যান তৈরি করবে:
: | git mktree | git diff --shortstat --stdin
বা:
git ls-tree @ | sed '1i\\' | git mktree --batch | xargs | git diff-tree --shortstat --stdin
আপনি বাইনারি ফাইলগুলি অন্তর্ভুক্ত করতে চান কিনা তার উপর নির্ভর করে দুটি সমাধান রয়েছে।
git grep --cached -al '' | xargs -P 4 cat | wc -l
git grep --cached -Il '' | xargs -P 4 cat | wc -l
"xargs -P 4" এর অর্থ এটি চারটি সমান্তরাল প্রক্রিয়া ব্যবহার করে ফাইলগুলি পড়তে পারে। আপনি যদি খুব বড় সংগ্রহস্থলগুলি স্ক্যান করে থাকেন তবে এটি সত্যিই সহায়ক হতে পারে। মেশিনের ক্ষমতা উপর নির্ভর করে আপনি প্রক্রিয়া সংখ্যা বৃদ্ধি করতে পারেন।
-a, বাইনারি ফাইলগুলি পাঠ্য হিসাবে প্রক্রিয়াকরণ করুন (বাইনারি অন্তর্ভুক্ত করুন)
-l '', লাইন
মিলানোর পরিবর্তে কেবল ফাইলের নাম দেখান (কেবল খালি ফাইলগুলি স্ক্যান করুন)
-আমি বাইনারি ফাইলগুলিতে নিদর্শনগুলি মেলে না (বাইনারি
বাদে ) - ক্যাচড, কাজের গাছের পরিবর্তে সূচীতে অনুসন্ধান করুন (অনির্বাচিত ফাইলগুলি অন্তর্ভুক্ত করুন)