linux 一个文件夹里有大概接近 2000 万个文件(没有子文件夹)。
使用 ls . | wc -l 这个命令执行查询数量会内存耗尽,有没有办法能精确查询文件数量呢?
使用 ls . | wc -l 这个命令执行查询数量会内存耗尽,有没有办法能精确查询文件数量呢?
|
lxk11153Nov 4, 2020
1
可以放这么多吗?[doge]
|
|
yuanbo6Nov 4, 2020
2
惊了
|
|
cydianNov 4, 2020 via Android
3
可以放这么多,inode 够用就行
|
|
slimhighNov 4, 2020
4
自己写个程序遍历文件夹。
|
|
OskNov 4, 2020
5
没有实战过, 不过可以考虑这些方法优化:
ls 命令本身会进行排序, 文件数目多时可能会很慢. 使用 `ls -U` 不排序来提升第一个命令的动作. 把 ls 的输出重定向到文件中, 而不是管道, 后续再用其他工具处理? |
|
soniceNov 4, 2020
6
|
|
egenNov 4, 2020
7
ls -f1 | wc -l
|
|
acmoreNov 4, 2020
8
locate -cr 'path_to_your_folder'
|
|
qinlouNov 4, 2020
9
find . | wc -l 或者 find . >count.file; wc -l file
|
|
novanulNov 4, 2020
10
sudo updatedb && locate --regex ^$(pwd) | wc -l 不知道可不可以
|
|
LiutosNov 4, 2020
11
用 ls -f 试试,可以让输出的内容不排序,这样可以不用将所有文件名先读入内存。
|
|
13
|
|
14
或者用这个:
ls -U dir_name >lst.txt wc -l lst.txt |
|
15
ls -U dir_name/ | wc -l 也可以
|
|
nukNov 4, 2020
16
|
|
17
ls -f | wc -l
find . -name "*" | wc -l |
|
mingl0280Nov 4, 2020
18
备注一下,可能有些系统有 locate,locate -c 就行
|
|
dorothyRENNov 4, 2020
19
ls -l > a && wc -l a
|
|
ungrownNov 4, 2020
20
用 python 的`os.walk`试试,那玩意不是一下子全部遍历的,是逐级返回的,应该不会爆内存
|
|
openbsdNov 4, 2020
21
tree ?
|
|
secsilmNov 4, 2020
22
python 的话,可以用 Path(dir).iterdir(),返回的是 generator,不耗内存。
|