Command
行數大於 2 的文件列表
一堆文件存在於一個目錄中。有些文件有 1 行,有些文件有更多的行數。
我正在嘗試顯示來自特定目錄(帶有完整路徑)的文件名,其中文件中的行數> 2。
我到這裡,來顯示目錄中的文件。查找 /abc/def -maxdepth 1 -type f
使用 GNU
awk
ormawk
and some others,列出目前目錄中至少包含 3 行的正常文件:find . ! -name . -prune -type f -size +2c -exec awk ' FNR==3{print FILENAME; nextfile}' {} +
(請注意,這也計算未終止的行。如果文件包含
a\nb\nc
而不是a\nb\nc\n
,即使wc -l
只返回 2 ,仍然認為該文件有 3 行。-size +2c
這只是跳過打開和讀取少於 3 個字節的文件的優化,因為那些不能包含 3 行)。這是有效的,因為它執行盡可能少的命令,並在看到第 3 行時立即停止處理文件,而不是完全讀取文件以查找行數。
如果您的外殼是
zsh
,您可以將其縮短為awk 'FNR==3{print FILENAME; nextfile}' ./*(D.L+2)
find . ! -name . -prune
是 GNU 的標準等價物find . -mindepth 1 -maxdepth 1
(修剪每個目錄,但.
)。(請注意,
awk
上面的程式碼也可以在awk
不支持的實現中工作nextfile
,只是它將在那裡完全讀取文件,該nextfile
語句將被視為變數引用)。
grep -Hsc . -- * | sed -n '/:[0-2]$/!s/:.*$//p'
但不要將空行計算在內。如果你想把它計算在內:
grep -Hsc '$' -- * | sed '/:[0-2]$/d;s/:.*$//'