今天同事备份数据到NAS,但感觉备份有问题,因为文件过多,所以决定通过命令的方式统计文件夹下的文件数量,来初步判断备份是否完整。而原文件在Window下,而 NAS 是Liunx操作系统,故需要通过不同的命令来统计文件数量。

Window 统计文件数量

首先,来统计原文件数量。找了半天,发现dir命令就可以用于统计。

dir /b /a-d | find /v /c "&#@" 

怎么文件数量为0? 原来上面命令仅仅是统计当前目录下的文件数,而不包括子目录,那么如何也包含子目录的文件呢?

原来只需要再添加参数/s即可。

dir /s /b /a-d | find /v /c "&#@" 

当然,这里关键内容是find /v /c "%#@"

Window 统计文件和目录数量

只需要去掉选项/a-d 来包含所有类型。

dir /s /b | find /v /c "&#@" 

Liunx 统计文件数量

因为是NAS,故可以将Liunx 共享目录映射到 Window 下,从而使用 Windows 命令统计。下面将的是直接使用Liunx命令来统计。

直接统计某文件夹下文件数量

ls -l |grep "^-"|wc -l

统计文件夹下所有文件数量

ls -lR|grep "^-"|wc -l

命令ls -lR表示列表输出该目录下文件信息,R表示包括子目录,同时列出的文件包括目录、链接、设备文件等)

命令grep "^-"表示对结果进行过滤,只保留一般文件,如果只保留目录就是 ^d

当然你也可以按文件名过滤统计,统计 /var/www 目录下所有html 文件数量:

ls -l "/var/www"|grep "html"|wc -l

Liunx 统计目录数量

统计文件夹下目录数量

ls -l |grep "^d"|wc -l

统计文件夹下目录的个数,包括子文件夹里的 ls -lR|grep “^d”|wc -l

附录- Window DOS Dir 命令信息

> dir /?
显示目录中的文件和子目录列表。

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

  [drive:][path][filename]
              指定要列出的驱动器、目录和/或文件。

  /A          显示具有指定属性的文件。
  属性         D  目录                R  只读文件
               H  隐藏文件            A  准备存档的文件
               S  系统文件            I  无内容索引文件
               L  解析点             -  表示“否”的前缀
  /B          使用空格式(没有标题信息或摘要)。
  /C          在文件大小中显示千位数分隔符。这是默认值。用 /-C 来
              禁用分隔符显示。
  /D          跟宽式相同,但文件是按栏分类列出的。
  /L          用小写。
  /N          新的长列表格式,其中文件名在最右边。
  /O          用分类顺序列出文件。
  排列顺序     N  按名称(字母顺序)     S  按大小(从小到大)
               E  按扩展名(字母顺序)   D  按日期/时间(从先到后)
               G  组目录优先           -  反转顺序的前缀
  /P          在每个信息屏幕后暂停。
  /Q          显示文件所有者。
  /R          显示文件的备用数据流。
  /S          显示指定目录和所有子目录中的文件。
  /T          控制显示或用来分类的时间字符域。
  时间段      C  创建时间
              A  上次访问时间
              W  上次写入的时间
  /W          用宽列表格式。
  /X          显示为非 8.3 文件名产生的短名称。格式是 /N 的格式,
              短名称插在长名称前面。如果没有短名称,在其位置则
              显示空白。
  /4          用四位数字显示年

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。

附录- Window DOS Find 命令信息

> find /?
在文件中搜索字符串。

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

  /V         显示所有未包含指定字符串的行。
  /C         仅显示包含字符串的行数。
  /N         显示行号。
  /I         搜索字符串时忽略大小写。
  /OFF[LINE] 不要跳过具有脱机属性集的文件。
  "string" 指定要搜索的文本字符串。
  [drive:][path]filename
             指定要搜索的文件。

如果没有指定路径,FIND 将搜索在提示符处键入
的文本或者由另一命令产生的文本。

总结

通过简单命令即可快速统计文件数量,而不需要在大文件时苦苦的通过右键属性来查看统计信息。