你可以試試:
wc -l $1/* | grep -v total | sort -g | tail -1
實際上避免了grep的,這也將刪除含有 「總」 的文件:
wc -l $1/* | sort -rg | sed -n '2p'
:在意見提出
for f in $1/*; do wc -l $f; done | sort -g | tail -1
,甚至更好,
你甚至可以使它成爲一個功能:
function get_biggest_file() {
wc -l $* | sort -rg | sed -n '2p'
}
% ls -l
... 0 Jun 12 17:33 a
... 0 Jun 12 17:33 b
... 0 Jun 12 17:33 c
... 0 Jun 12 17:33 d
... 25 Jun 12 17:33 total
% get_biggest_file ./*
5 total
EDIT2:用我給的功能,你可以簡單地輸出你需要的東西如下:
get_biggest $1/* | awk '{print "The file \"" $2 "\" has the maximum number of lines: " $1}'
編輯:如果你試圖寫函數因爲你已經在這個問題寫它,你應該在最後添加行連續字符,如下,或你的shell會認爲你想發出4個命令:
wc -l $1/* 2>/dev/null \
| grep -v ' total$' \
| sort -n -k1 \
| tail -1l
來源
2013-06-12 15:19:36
zmo
,你能否告訴我們到目前爲止你已經嘗試了什麼? –
對不起。 – Looking2learned
btw,我剛試過你的解決方案'wc -l $ 1/* 2>/dev/null | grep -v'total $'| sort -n -k1 |尾巴-1'和它的作品。我不明白你在做錯什麼。 – zmo