Answers:
您应该使用如下命令:
find /group/book/four/word/ -type f -exec wc -l {} + | sort -rn
find
:在所需路径上搜索文件。如果您不希望它递归,并且您的find
实现支持它,则应-maxdepth 1
在该-exec
选项之前添加。exec
:告诉命令wc -l
在每个文件上执行。sort -rn
:以相反的顺序对结果进行数字排序。从大到小。(假设文件名不包含换行符)。
wc
也会打印total
一行,因此在这里,除非只有一个文件,否则您还将获得一个或多个“总计”行。 。您可以通过管道将grep /
其删除。
sort
命令而投票
如果您不需要递归,可能是最简单的版本:
wc -l /group/book/four/word/*|sort -n
wc
在下的-l
每个(但隐藏的)(*
)文件中对行(选项)进行计数/group/book/four/word/
,并对sort
结果(通过pipe |
)进行数字排序(选项-n
)。
有人对此答案进行了评论grep -rlc
,然后加以压制。确实grep
是一个不错的选择,尤其是在需要递归的情况下:
grep -rc '^' /group/book/four/word/|tr ':' ' '|sort -n -k2
将对目录中与()(即行的开头)相匹配的行(option -c
)进行递归计算(option )。然后,您必须用一个空格代替冒号,例如,使用,以帮助您要在第二列(选项)上按数字排序的(选项)-r
grep
'^'
/group/book/four/word/
tr
sort
-n
-k2
))。
更新:请参阅Stephane关于可能存在的限制以及如何真正摆脱的评论tr
。
grep -c .
计算至少包含一个有效字符的行。使用grep -c '^'
计算所有线路(也将计算与一些最后的换行后尾随字符grep
实现)。请注意,并非所有的grep
实现都支持,-r
并且行为之间也有所不同。您无需将:
s(冒号,而不是分号)转换为的空格sort
。只需使用-t:
。请注意,这假定文件名不包含:
空格或换行符。
wc
如果您通过多条路径,我不知道能给您这么方便的总数。将该功能与通配符和管道连接起来sort
真的很干净。
与zsh
:
lines() REPLY=$(wc -l < $REPLY)
printf '%s\n' /group/book/four/word/*(.no+lines)
我们定义了一个新的排序功能lines
,该功能可以响应文件中的行数。并且我们使用o+lines
glob限定符,该限定符与n
(用于数字排序)一起定义了glob结果的排序方式。(.
也添加到仅检查常规文件)。
这样就不会假设文件名除了隐藏文件(以开头的那些文件.
)以外还可以包含什么字符,这些假设都将被忽略。D
如果需要,请添加glob限定符。
bash
仅带有标签...
您无需指定是否还需要文件的任何子目录中的文件/group/book/four/word
。find
jherran的答案中的解决方案将归为子目录。如果不需要,请使用外壳程序代替:
for file in ./*; do [ -f "$file" ] && wc -l "$file"; done | sort -n
如果您的文件名可以包含换行符,则可以使用以下内容:
for file in ./*; do
[ -f "$file" ] &&
printf "%lu %s\0" "$(wc -l < "$file")" "$file"
done | sort -zn | tr '\0' '\n'
最后,如果您确实想进入子目录,则可以在bash
4或更高版本中使用它:
shopt -s globstar
for file in ./**/*; do [ -f "$file" ] && wc -l "$file"; done | sort -n
需要注意的是版本bash
之前的4.3进行下面的符号链接时,递归下降目录树(如zsh
的或tcsh
的***/*
)。
另外,以上所有解决方案都将忽略隐藏文件(名称以a开头的文件.
,用于shopt -s dotglob
包含它们),还将包括符号链接的行数(该find
方法不会)。
-xtype f
在GNU find或*(-.)
zsh中)的符号链接,并将省略隐藏文件。
%lu
在printf
?我记得这意味着长无符号十进制,真的有必要吗?为什么不将数字视为字符串?这有什么不同吗?
0
而不是空字符串,这会稍好一些。有些排序实现使用无符号整数,有些带有符号。%lu
听起来像是最安全的选择,但好像没有2^31
台词无关紧要,但这仍然需要一段时间。
ls -l
没有给出行数。ls -lS
通过一些ls
实现按大小对文件进行排序(大小是内容中的字节数)。