今天同事备份数据到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 将搜索在提示符处键入
的文本或者由另一命令产生的文本。
总结
通过简单命令即可快速统计文件数量,而不需要在大文件时苦苦的通过右键属性来查看统计信息。