在 Linux 中统计文件数量,常见需求有几种,下面按不同场景给你总结最常用的方法。
只统计普通文件,不包含目录本身:
ls -l | grep "^-" | wc -l
或更推荐(避免 ls 解析问题):
find . -maxdepth 1 -type f | wc -l
find . -type f | wc -l
find . -type d | wc -l
find . | wc -l
find . -type f | wc -l
find . -type d | wc -l
find . -type l | wc -l
find /path/to/dir -type f | wc -l
.git)find . -type f ! -path "./.git/*" | wc -l
for dir in */; do
echo "$dir: $(find "$dir" -type f | wc -l)"
done
使用 locate(需先建立索引):
locate -r "^$PWD/.*[^/]$" | wc -l
❌ 不推荐:
ls | wc -l
原因:会统计目录、隐藏文件,且对特殊文件名不安全。
✅ 推荐:
find
| 需求 | 命令 |
|---|---|
| 当前目录普通文件 | `find . -maxdepth 1 -type f |
| 所有文件(含子目录) | `find . -type f |
| 所有目录 | `find . -type d |
| 排除目录 | `find . -type f ! -path “./.git/*” |
如果你有具体场景(比如:只统计 .log 文件、统计某个用户文件、统计大目录性能优化),可以告诉我,我可以给你更精确的命令。