【bash】命令查看当前目录下文件个数

要用 ls 查看当前目录下的文件个数,可以结合 wc -l 来统计行数:

bash 复制代码
ls -1 | wc -l

说明:

  • ls -1:以一行一个文件的方式列出。
  • wc -l:统计行数,也就是文件/目录的数量。

⚠️ 需要注意:

  1. 这个方法会把文件和子目录都算进去。
  2. 如果要统计仅文件数(排除目录),可以用:
bash 复制代码
ls -l | grep "^-" | wc -l
  1. 如果要统计仅目录数
bash 复制代码
ls -l | grep "^d" | wc -l

例如

bash 复制代码
ls -1 | wc -l
35

问题:比实际的多了3个数目

您好!您的怀疑非常敏锐,直击问题核心。

是的,问题就出在 ls -al | wc -l 这个指令上。它并不是一个精确的文件计数方法。

为什么 ls -al | wc -l 的结果不准确?

当您运行 ls -al 时,它列出的内容除了您目录下的文件外,还额外包含了至少三行:

  1. total: 输出的第一行,显示了目录下所有文件的磁盘空间总占用量。
  2. . (当前目录): 代表当前目录自身的条目。
  3. .. (上级目录): 代表父级目录的条目。

因此,ls -al | wc -l 的结果总是会比实际的文件(和子目录)数量多至少3个

在您的情况下,293 - 3 = 290,这正好与您的数据库记录数和脚本诊断出的文件数完全吻合。

哪个是正确的?

您脚本中的诊断工具 (find_missing_records) 得到的结果是准确的。

因为它采用的方法是:

  1. os.listdir(MEDIA_MP4_DIR): 获取目录下所有条目的列表(不包含 ...)。
  2. if f.endswith('.mp4'): 精确地筛选出 只以 .mp4 结尾的文件。

这个方法确保了它只计算您真正关心的MP4文件,不多也不少。

如何在命令行中精确计数?

如果您想在命令行中得到和脚本一样的精确文件数,可以使用以下指令:

bash 复制代码
# 只计算当前目录下的文件和文件夹数量(不含.和..)
ls -1 | wc -l

# (更精确) 只计算当前目录下的文件数量(不包括子目录)
find . -maxdepth 1 -type f | wc -l

# (最相关) 只计算当前目录下的MP4文件数量
find . -maxdepth 1 -type f -name "*.mp4" | wc -l
相关推荐
REDcker4 分钟前
埋点系统设计:从成熟工具到自建方案
运维·服务器·网络·用户分析·埋点·埋点系统
予枫的编程笔记6 分钟前
【Linux入门篇】Ubuntu和CentOS包管理不一样?apt与yum对比实操,看完再也不混淆
linux·人工智能·ubuntu·centos·linux包管理·linux新手教程·rpm离线安装
ai_xiaogui7 分钟前
【开源前瞻】从“咸鱼”到“超级个体”:谈谈 Panelai 分布式子服务器管理系统的设计架构与 UI 演进
服务器·分布式·架构·分布式架构·panelai·开源面板·ai工具开发
先做个垃圾出来………9 分钟前
SSH密钥管理最佳实践
运维·ssh
RisunJan11 分钟前
Linux命令-lpr(从命令行提交文件到打印机打印)
linux·运维·服务器
历程里程碑12 分钟前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Wpa.wk12 分钟前
接口自动化 - 接口鉴权处理常用方法
java·运维·测试工具·自动化·接口自动化
Sheep Shaun14 分钟前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制
codingWhat16 分钟前
Linux 入门指南
linux
一个网络学徒26 分钟前
python5
java·服务器·前端