linux - 检查目录中是否存在大量 .gz 文件的命令

标签 linux bash unix

以下是当天的文件。前几天的文件被系统转换为.gz。我想查找最近几天特定 .gz 文件的总数。我尝试了下面的命令,它给了我错误。请推荐

bash-3.2$ ls -lrth|tail 

299K Mar 23  2017 N08170323091903766
333K Mar 23  2017 N08170323091903771
328K Mar 23  2017 N09170323091903776
367K Mar 23  2017 N09170323091903782
347K Mar 23  2017 N04170323092003784
368K Mar 23  2017 N08170323092003783

***bash-3.2$ ls -lrth N08170322*|wc -l***

bash: /usr/bin/ls: Arg list too long

          0

***bash-3.2$ zcat N08170322*.gz|wc -l***

bash: /usr/bin/zcat: Arg list too long

           0

最佳答案

发生这种情况是因为目录中的文件太多。

您可以轻松解决第一个问题:

ls | grep -c N08170322

或者,更准确地说:

ls | grep -c '^N08170322'

会给你文件列表。然而,更好的方法是:

find . -name "N08170322*" -exec ls {} + | wc -l

这将解决ls parsing @hek2mgl 的评论中提到的问题。

如果您确实想一次统计所有压缩文件的行数,您可以这样做:

find . -name "N08170322*" -exec zcat {} + | wc -l
<小时/>

另请参阅:

关于linux - 检查目录中是否存在大量 .gz 文件的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42966917/

相关文章:

bash - 将\n 替换为空白,但使用 sed/tr 保留\r\n

linux - 如何重启后台php进程? (如何获取pid)

linux - Unix 基于分号对行进行排序

linux - 更改 TX1 中的 GPU 时钟速率时权限被拒绝

linux - 如何为静态文件创建原生 Debian 包?

linux - 开关盒 : Confusing error in "Syntax error: word unexpected (expecting "in")"

c - 如何定义系统()

linux - 我需要跟踪 Linux(或 POSIX 系统)中给定进程创建的所有子进程

linux - 存在 FIFO 问题的输入循环

linux - macb ff0e0000.ethernet eth0 : Could not attach to PHY