剛畢業那會兒有一次去一家臺灣公司面試,問我寫過多少行程式碼。從沒想過這個問題,粗略算了算,隨口說道:大概幾十萬行吧。最近整理資料,看著eclipse左邊滿滿的列表,想起了這個事。倒底總共有多少行程式碼?——這事如果在windows下要麼找工具,要麼程式設計序。又想到linux裡的命令統計很方便,於是打算用個命令來完成。可分析來分析去,恐怕一行命令是搞不定的——又涉及遞迴查詢,又涉及指定檔案型別,又涉及對檔案全路徑進行操作。最終還是用了一段shell指令碼才達到目的。
#!/bin/bash declare -i filenumber=0 declare -i linenumber=0 list_alldir(){ for file in `ls -a $1` do if [ x"$file" != x"." -a x"$file" != x".." ];then if [ -d "$1/$file" ];then list_alldir "$1/$file" else if [[ $file =~ \.java$ ]]; then echo "$1/$file" filenumber=$filenumber+1 linenumber=$linenumber+`cat "$1/$file"|wc -l` fi fi fi done } if [ "$1" = "" ];then arg="." else arg="./"$1 fi list_alldir $arg echo "There are $filenumber java files under directory: $arg" echo "--total code lines are: $linenumber"
使用方法:儲存成sh檔案,授予執行許可權。執行./xxx.sh src ,可帶引數。不帶引數是統計當前目錄下所有java檔案,帶引數是統計指定目錄下的所有java檔案。引數只能指定到目錄一級,不能到檔案。
還可以寫的更通用一些,比如統計任意型別的檔案,懶得改了。統計結果大部分專案在幾千至幾萬行之間,整個jdk7也才260多萬行原始碼,還包括那麼多註釋行呢。當年的回答確實有點不知天高地厚了。