一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - linux中快速列出文件列表的多種方法總結

linux中快速列出文件列表的多種方法總結

2022-02-19 19:20魏守峰 Linux

這篇文章主要給大家總結介紹了關于linux中如何快速列出文件列表的多種方法,分別介紹了walk、os.scandir、tree、find以及locate等方法,文中給出了詳細的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

最近在工作中碰到一個很棘手的問題,需要讀取出ubuntu系統中某個目錄下所有文件,由于服務器中存儲的文件實在太多,導致此過程效率十分低下,動輒需要等待一個小時之久,還只是一個目錄。于是如何快速獲取文件列表便是這兩天的頭等大事,折騰半天找到一個較為快速的方法,記錄如下,話不多說了,來一起看看詳細的介紹吧。

多種實現方法

嘗試了多種方法,有編程的和非編程的。

1、walk

python的walk庫能夠遞歸的讀取目錄下所有文件,這個是最常規的方法,然而效率有些緩慢。實現很簡單,不贅述。

2、os.scandir

python中的os.scandir方法官方解釋為快速讀取目錄,測試了一下速度相對walk而言是由提高,但是還是達不到要求,也需要自己寫遞歸,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
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命令,使用如下命令

?
1
ls –l –R(或-lR) src > list.txt

此命令能夠列出src目錄下的所有文件,但是效率還是不夠高,而且結果包含了目錄信息以及文件信息,不太整齊,需要后續處理。

4、tree

tree命令本身用于列出文件系統的結構樹,在設置一些參數的情況下也能夠實現列出所有目錄和文件的功能。

?
1
tree -afi -L 3 -o 2.txt --noreport src

-a列出所有文件,-f列出完整路徑(結果為絕對路徑或者相對路徑與find用法一致),-i不畫tree的結構線, -L列出多少層目錄,-o輸出到文件,--noreport不要最后的summary。

5、find

find命令本身是查找文件的命令,但是如果使用得當,能夠快速列出目錄下文件,命令如下:

?
1
find src > 1.txt

此命令速度足夠快,基本能夠滿足需要了。find的結果相對當前src的路徑,也就是說其每條結果的開頭均是src,如果src為絕對路徑,則結果為絕對路徑,如果src為相對路徑,則結果以此相對路徑為開頭。

6、locate

又Google了一下,發現locate與find的功能相似,locate也能夠查找文件,于是猜想locate也能夠實現此功能,試之,果然可以,寫法都是一樣的。

?
1
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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色香视频在线 | 双性人bbww欧美双性 | 国产成人一区二区三区在线视频 | 亚洲视频在线观看免费视频 | 美女露尿口 | 99久久综合九九亚洲 | 色狠狠婷婷97 | 色淫阁小说 | 精品视频国产 | 福利社在线免费观看 | 色图图片 | 催奶师小说 | 亚洲国产精品久久网午夜小说 | 美妇在男人胯下哀求 | 精品国产乱码久久久久久免费 | 亚洲日本中文字幕天天更新 | 性鸥美| 久久久精品3d动漫一区二区三区 | 洗濯屋H纯肉动漫在线观看 武侠艳妇屈辱的张开双腿 午夜在线观看免费观看 视频 | 果冻传媒在线播放1 | 欧美色精品天天在线观看视频 | sss在线观看免费视频 | 国产成人一区二区三区小说 | 成人精品mv视频在线观看 | 国产大片线上免费观看 | 石原莉奈adn093店长未婚妻 | 99热久久这里只有精品6国产网 | 99九九精品免费视频观看 | 跪在老师脚下吃丝袜脚 | 欧洲男同直粗无套播放视频 | 93版高校教师| 日韩欧美在线观看综合网另类 | 女教师波多野结衣高清在线 | 日本无卡无吗中文免费 | 好男人资源在线观看免费的 | 美女免费观看一区二区三区 | 午夜福利院电影 | 国产51| 午夜无码国产理论在线 | 亚洲高清在线天堂精品 | 午夜精品久久久久久久99蜜桃i |