linux中快速列出文件列表的多种方法总结
作者:魏守峰 发布时间:2023-11-03 18:43:22
前言
最近在工作中碰到一个很棘手的问题,需要读取出ubuntu系统中某个目录下所有文件,由于服务器中存储的文件实在太多,导致此过程效率十分低下,动辄需要等待一个小时之久,还只是一个目录。于是如何快速获取文件列表便是这两天的头等大事,折腾半天找到一个较为快速的方法,记录如下,话不多说了,来一起看看详细的介绍吧。
多种实现方法
尝试了多种方法,有编程的和非编程的。
1、walk
python的walk库能够递归的读取目录下所有文件,这个是最常规的方法,然而效率有些缓慢。实现很简单,不赘述。
2、os.scandir
python中的os.scandir
方法官方解释为快速读取目录,测试了一下速度相对walk而言是由提高,但是还是达不到要求,也需要自己写递归,代码如下:
def scan_path(file_path, level = 3):
files = []
if level >= 0:
path = os.scandir(file_path)
for p in path:
if p.is_dir():
files.extend(scan_path(p.path, level - 1))
else:
files.append(p.path)
return files
当这两种方法都行不通的时候我就开始考虑才用非编程方法了。理论上来说python的执行效率已经蛮高了,虽然可能达不到c或者c++的速度,但是相比java、C#来说已经够快了,所以就没有再考虑编程的方式,而是转向linux系统原生的方式。
3、ls
最先想到的就是ls命令,使用如下命令
ls –l –R(或-lR) src > list.txt
此命令能够列出src目录下的所有文件,但是效率还是不够高,而且结果包含了目录信息以及文件信息,不太整齐,需要后续处理。
4、tree
tree命令本身用于列出文件系统的结构树,在设置一些参数的情况下也能够实现列出所有目录和文件的功能。
tree -afi -L 3 -o 2.txt --noreport src
-a列出所有文件,-f列出完整路径(结果为绝对路径或者相对路径与find用法一致),-i不画tree的结构线, -L列出多少层目录,-o输出到文件,--noreport不要最后的summary。
5、find
find命令本身是查找文件的命令,但是如果使用得当,能够快速列出目录下文件,命令如下:
find src > 1.txt
此命令速度足够快,基本能够满足需要了。find的结果相对当前src的路径,也就是说其每条结果的开头均是src,如果src为绝对路径,则结果为绝对路径,如果src为相对路径,则结果以此相对路径为开头。
6、locate
又Google了一下,发现locate与find的功能相似,locate也能够查找文件,于是猜想locate也能够实现此功能,试之,果然可以,写法都是一样的。
locate src > 1.txt
不同点在于无论src为相对路径还是绝对路径,其结果均为绝对路径。
使用time命令进行命令执行时间测试,发现find和locate时间基本相同,有时locate会稍微快一些,而tree命令则有些慢。
结论
以上均可取到文件夹下所有文件,使用walk和scandir最为方便与程序集成,但是速度稍微有些慢,find和locate命令速度较快,tree命令功能强大,但速度相对find和locate有些慢,此三者若要与python集成,则需要在程序中使用os.popen等管道机制来执行拼接的bash命令。所以以上命令各有所长,按照自己的需求取舍。
来源:http://www.jianshu.com/p/3a9c1800bce1
猜你喜欢
- v5shop为“一伍一拾”提供企业电子商务解决方案记者近期从v5shop获悉,广受网民欢迎的“公民记者”部落——一伍一拾已授权上海威博网络技
- 域名:GoDaddy是世界第一大域名注册商,域名的附加服务很多,有blog,Email,email指向,停放页,出售页面等。而且可以很方便的
- 经常有发布商给我们写信询问网站的搜索收录问题,为此我们 AdSense 小组特意咨询了Google 搜索部门,并在这里向站长们介绍一些信息,
- 最近公司有一个奇怪的需求,意思是有一个网页,要时时的打开着。现在只有把这个网页在服务器上打开。这样才能满足需求。但我在应用中遇见了个问题。我
- 如今,互联网将进入一个崭新的阶段,信息化的发展带动其它产业的发展,各行业都将与它进行更深入的融合和渗透。越来越多的企业已开始从对互联网的认知
- 下午15时左右,百度再次改版百度指数(index.baidu.com)功能和布局。新布局更加直观,便于查看相关检索词数据与相关新闻内容。此外
- 国内大数多站长,还都是靠挂广告联盟的广告来赚钱的,所以选择一个优秀的广告联盟,对站长来说是非常重要的,广告联盟常见的几百家,国内国外的多的是
- “政府扩大内需,不一定要把资金都投到‘铁公机’传统基础设施上,投入到电子商务方面效果可能更明显。”中国经济时报社社长兼总编辑包月阳表示,在这
- 作为一个blogger或者blog读者,你一定对垃圾评论(comment spam)并不陌生。Google Blog的Preventing
- 随着互联网的发展,e-mail迅速成长成为主要的网络信息传递工具。面对大量要求能够快速,廉价,和高可信赖的e-mail需求,很多公司和个人都
- 虽然自己做站长没有几年,但是经历了从03年到08的,也有了别人没有的经验和体会,其中很重要的一点就是明白了在中国做站长最重要的一点是什么?就
- 作为一个高速发展而且看起来异常暴利的行业,网络游戏产业向来不缺乏新闻,而2009年可谓中国网游产业诞生以来最为热闹的一年。3月,九城和网易为
- 很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验
- 1.安装:yum -y install rsync2.vim /etc/xinetd.d/rsyncservice rsync{disabl
- Apache的mod_rewrite是提供了强大URL操作的杀手级的模块,可以实现几乎所有你梦想的URL操作类型,其代价是你必须接受其复杂性
- 当提到内容的创意时,我们通常会把主要的注意力集中到提高内容可信度上,似乎我们正在写一些系列化的书籍,然而,博客并不是一本书。实际上,网上的博
- 首先说一下,漏洞是t00ls核心群传出去的,xhming 先去读的,然后我后来读的,读出来的都是代码执行,1月5日夜里11点多钟,在核心群的
- 另一个经常会碰到的问题是,网站被惩罚排名下降应该怎么办?首先应该确定你的网站是完全被封,还是只是排名下降。直接搜索一下域名或URL用site
- 3)IMAP4协议IMAP协议是Internet消息访问协议(Internet Message Access Protocol)的缩写,现在
- 北京时间4月1日消息,据国外媒体报道,庆祝愚人节已经成为许多网络公司的传统。让每年的愚人节节目都保持创造性是一件很难的事情,但一些公司已经知