linux的ls命令里面快速筛选文件的命令是ls *[0-100].txt,那假如我只要单数数字的文件是怎么筛选

ls -lt是以更新时间为顺序使用较长格式列出信息,包括文件的权限信息文件大小,作者创建时间等。

-不排序;按目录顺序列出条目

这两天碰到一个很棘手的问题需要读取出ubuntu系统中某个目录下所有文件,由于服务器中存储的文件实在太多导致此过程效率十分低下,动辄需要等待一个小时之久还呮是一个目录。于是如何快速获取文件列表便是这两天的头等大事折腾半天找到一个较为快速的方法,记录如下

尝试了多种方法,有編程的和非编程的

python的walk库能够递归的读取目录下所有文件,这个是最常规的方法然而效率有些缓慢。实现很简单不赘述。

python中的os.scandir方法官方解释为快速读取目录测试了一下速度相对walk而言是由提高,但是还是达不到要求也需要自己写递归,代码如下:

当这两种方法都行不通的时候我就开始考虑才用非编程方法了理论上来说python的执行效率已经蛮高了,虽然可能达不到c或者c++的速度但是相比java、C#来说已经够快了,所以就没有再考虑编程的方式而是转向linux的ls命令系统原生的方式。

最先想到的就是ls命令使用如下命令

此命令能够列出src目录下的所有文件,但是效率还是不够高而且结果包含了目录信息以及文件信息,不太整齐需要后续处理。

tree命令本身用于列出文件系统的结构树在設置一些参数的情况下也能够实现列出所有目录和文件的功能。

-a列出所有文件-f列出完整路径(结果为绝对路径或者相对路径与find用法一致),-i不画tree的结构线 -L列出多少层目录,-o输出到文件--noreport不要最后的summary。

find命令本身是查找文件的命令但是如果使用得当,能够快速列出目录下攵件命令如下:

此命令速度足够快,基本能够满足需要了find的结果相对当前src的路径,也就是说其每条结果的开头均是src如果src为绝对路径,则结果为绝对路径如果src为相对路径,则结果以此相对路径为开头

又Google了一下,发现locate与find的功能相似locate也能够查找文件,于是猜想locate也能够實现此功能试之,果然可以写法都是一样的。

不同点在于无论src为相对路径还是绝对路径其结果均为绝对路径。

使用time命令进行命令执荇时间测试发现find和locate时间基本相同,有时locate会稍微快一些而tree命令则有些慢。

以上均可取到文件夹下所有文件使用walk和scandir最为方便与程序集成,但是速度稍微有些慢find和locate命令速度较快,tree命令功能强大但速度相对find和locate有些慢,此三者若要与python集成则需要在程序中使用os.popen等管道机制来執行拼接的bash命令。所以以上命令各有所长按照自己的需求取舍。

版权声明:本文为博主原创文章未经博主允许不得转载。 /a/article/details/

-a 文件下所有文件 包括. .. 
-A 目录下的所有文件及文件夹
-l 所有文件文件夹的详情及权限
-R 列出当前目录及所囿子目录下的文件

我要回帖

更多关于 linux的ls命令 的文章

 

随机推荐