毎日1つのLinux Shellコマンド

1401 ワード

find . -iname '*.java' -exec wc -l {} \; | sort -n | cut --delimiter=. -f 1 | awk '{s+=$1}END{print s}'

find
.             現在のディレクトリの問合せ
-iname              ファイル名をクエリーし、大文字と小文字を無視
'*.java'               クエリーが「.java」で終わるファイルを表すわずかな正則に関連します.
-exec                  後にcommandコマンドに従い、【{};】で終了します({}と;の間にスペースがあります).{}は、前に検索した結果を表します.
wc -l filename    filenameファイルの行数を印刷する
では、次の行のコードの意味は、ディレクトリのjavaファイルごとのコード行数を印刷することです.
find . -iname '*.java' -exec wc -l {} \;

次に、
sort -n            前の結果をソートし、数値でソートします.より多くのソートルールはman sortを参照してください.
cut                  文字列を分割します.デフォルトの分割子TAB、--delimiterで分割子を指定します.-f nオプションでn番目の文字を印刷します.
cut --delimiter=. -f 1

.zを分割子として、最初の文字を印刷することを意味します.
awkはshellの中で比較的に強いツールで、後で専門的に話します
/*********************************************************************************/
文字列の頭文字の大文字
echo 'example' | sed -e 's/^\(.\)/\U\1/'

sedの検索と置換機能の利用
sed 's/       /     /g'

置換された文字列と新しい文字列は正規表現で表すことができます
^\(.\)               1 
\U\1    \U         ,\1         1

/*********************************************************************************
印刷ファイル13行目の情報
sed -n 13p camus.properties