回答
您可以使用此find
命令:
find . -type f -exec bash -c '[[ $(wc -l < "$1") -gt 2 ]] && echo "$1"' _ '{}' \;
更改到目錄,文件所在的位置,並使用以下命令:
for i in $(ls);
do
if [ `grep -c '' $i` -gt 2 ]; then
echo `wc -l $i`;
fi;
done
這個工作,當然,也可以作爲1行的聲明;)
此行迭代每個文件並使用grep來獲取純行數。 wc -l也可以得到計數,但是結果包括文件名......我不知道,如果您可以使用該值進行比較,但是這並不重要:如果行數大於2 (-gt 2),然後wc -l
$我會輸出行數和文件名。如果您只想查看文件名,則用$ i替換wc -l $i
。
當然,我沒有檢查,如果每個條目是一個文件。你可以在檢查行數之前做到這一點。
更新:雖然不建議使用ls進行解析,但仍可以使用它。你只需提前檢查你的文件名不包含換行符(或其他奇數)的符號。
[請勿解析'ls'](http://mywiki.wooledge.org/ParsingLs),請! –
呃,我不知道那個......但是我必須說:如果有人給這些名字的文件,這只是他/她自己的錯。換行符不屬於文件名Oo 如果線程創建者必須處理其他人產生的這種「狗屎」,那麼我爲他/她感到難過。 @gniourf_gniourf謝謝你的提示,我沒有意識到這一點。但至少你可以通過使用ls -l' – Acuros
來檢查是否有邪惡的跡象它不僅僅是關於文件名中的換行符,它還是關於空格和glob字符!例如,如果還有一個名爲'videos.mp3'的文件,則代碼會失敗,出現名爲'hello world'的文件或名爲'video [season1] .mp3'的文件。現在有三件事情:1.你正在使用_antipattern_:也就是說,你從一開始就做錯了一件事,解決它的唯一方法就是與shell進行對抗(例如,使用'set -f'和'IFS = $'\ n'',但這仍然會失敗,包含換行符的文件名)。治癒的方法是使用glob:'for in in *; do' ... –
使用xargs
和awk
:
$ find . -type f | xargs wc -l | awk '$1 > 2'
如果你是個混蛋repositiory,並希望只跟蹤文件來算,你可以使用下面的命令:
$ git ls-files | xargs wc -l | awk '$1 > 2'
- 1. BASH查找文件名但跳過文件名列表
- 2. 在bash中查找超過X天的文件並刪除
- 3. 超過1個值到行使用bash
- 4. bash(sed/awk?)找到文件中的行並在上面打印3行?
- 5. Bash + SFTP shell:對過濾的文件列表進行排序?
- 6. 找到兩個文件bash
- 7. 二郎列表:ZIP3 ..但超過3
- 8. 表格行超過列數。
- 9. bash腳本找到列表中的文件,將它們複製到dest,打印文件未找到
- 10. 找到文件的長列表中的3個最近修改的文件
- 11. 的Linux移除文件夾中超過1年且超過3個文件
- 12. Bash找到執行過程輸出重定向到每個不同的文件
- 13. 找到超過6個月的觀察次數超過3的個人子集
- 14. 找到目錄超過3天以上,並壓縮所有文件在它
- 15. Python - 覆蓋超過3個WAV文件的端到端
- 16. python 3文件中的「列表索引超出範圍」錯誤
- 17. 如何將帶文字的文件加載到文件超過300萬行的列表中
- 18. 超過3行電子郵件表格提交回復
- 19. 移動輸出到一個新的文件超過行
- 20. 在bash文件中查找列表中的確切名稱
- 21. 使用bash數組循環查找列表中的文件
- 22. 迭代通過文件找到陣列
- 23. Bash腳本來列出找不到的文件
- 24. 在bash文件的特定列中找到重複項
- 25. bash - 在文件列中找到不同的字符串
- 26. 記錄超過3列的最新值
- 27. 鴻溝的div超過3列
- 28. regx找到python 3.x中超過4個單詞的單詞
- 29. OSX Bash:動態地重命名從列表中找到的文件
- 30. Bash:在行末找到尾隨空格的文件
只是提示,「find/tmp/-type f -exec wc -l { } +「 – Noproblem
你想要超過3行(正如你的標題所示)或超過2行(如你問題的主體所示)? –