如何在Unix中找到一个目录,其普通文件的行数最多

时间:2014-10-23 09:14:30

标签: shell unix freebsd csh

好的,要清楚,这是一项学校作业,我不需要整个代码。问题是这样的:我用

set subory = ("$subory:q" `sh -c "find '$cesta' -type f 2> /dev/null"`)

用变量subory填充指定路径中的所有普通文件。然后我有一个foreach,我计算目录中所有文件的行,这不是问题。问题是,当测试此脚本时,一些大目录用作路径。会发生什么是脚本没有完成,但会给出错误消息word too long。这个词是subory。这是一个真正的问题,因为$cesta可以是一长串路径的元素。我试过了,但我无法解决这个问题。有任何想法吗?我有点失落。

编辑:要清楚,任务是为每个目录分配一个数字,表示所有文件的总行数,然后选择编号最大的目录。

1 个答案:

答案 0 :(得分:0)

您需要重新组织代码。例如:

find "$cesta" -type f -execdir wc -l {} +

这将对找到的所有文件运行wc,而不会遇到命令行长度限制,“无效”字符,如文件名中的换行符等。并且您不需要生成新的shell这样做。