最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年10月10日 10:42:06   作者:魏守峰  
這篇文章主要給大家總結(jié)介紹了關(guān)于linux中如何快速列出文件列表的多種方法,分別介紹了walk、os.scandir、tree、find以及l(fā)ocate等方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

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

多種實(shí)現(xiàn)方法

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

1、walk

python的walk庫能夠遞歸的讀取目錄下所有文件,這個(gè)是最常規(guī)的方法,然而效率有些緩慢。實(shí)現(xiàn)很簡單,不贅述。

2、os.scandir

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

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

當(dāng)這兩種方法都行不通的時(shí)候我就開始考慮才用非編程方法了。理論上來說python的執(zhí)行效率已經(jīng)蠻高了,雖然可能達(dá)不到c或者c++的速度,但是相比java、C#來說已經(jīng)夠快了,所以就沒有再考慮編程的方式,而是轉(zhuǎn)向linux系統(tǒng)原生的方式。

3、ls

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

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

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

4、tree

tree命令本身用于列出文件系統(tǒng)的結(jié)構(gòu)樹,在設(shè)置一些參數(shù)的情況下也能夠?qū)崿F(xiàn)列出所有目錄和文件的功能。

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

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

5、find

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

find src > 1.txt

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

6、locate

又Google了一下,發(fā)現(xiàn)locate與find的功能相似,locate也能夠查找文件,于是猜想locate也能夠?qū)崿F(xiàn)此功能,試之,果然可以,寫法都是一樣的。

locate src > 1.txt

不同點(diǎn)在于無論src為相對路徑還是絕對路徑,其結(jié)果均為絕對路徑。

使用time命令進(jìn)行命令執(zhí)行時(shí)間測試,發(fā)現(xiàn)find和locate時(shí)間基本相同,有時(shí)locate會稍微快一些,而tree命令則有些慢。

結(jié)論

以上均可取到文件夾下所有文件,使用walk和scandir最為方便與程序集成,但是速度稍微有些慢,find和locate命令速度較快,tree命令功能強(qiáng)大,但速度相對find和locate有些慢,此三者若要與python集成,則需要在程序中使用os.popen等管道機(jī)制來執(zhí)行拼接的bash命令。所以以上命令各有所長,按照自己的需求取舍。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 解決因文件權(quán)限導(dǎo)致git fetch命令執(zhí)行失敗的問題

    解決因文件權(quán)限導(dǎo)致git fetch命令執(zhí)行失敗的問題

    最近在工作中遇到一個(gè)問題,就是在在一個(gè)基于 git 的發(fā)布系統(tǒng)中拉取代碼,發(fā)現(xiàn)無法拉取最新的提交記錄,查找相關(guān)資料發(fā)現(xiàn)是因?yàn)槲募?quán)限的問題,所以這篇文章主要介紹了關(guān)于解決因文件權(quán)限導(dǎo)致git fetch命令執(zhí)行失敗的問題,需要的朋友可以參考下。
    2017-04-04
  • Linux環(huán)境部署DNF倉庫以及配置NFS共享服務(wù)

    Linux環(huán)境部署DNF倉庫以及配置NFS共享服務(wù)

    本文詳細(xì)介紹了如何在Linux環(huán)境下部署DNF倉庫和配置NFS共享服務(wù),DNF倉庫主要用于集中管理軟件包,而NFS共享服務(wù)則用于多系統(tǒng)間的文件共享,文章涵蓋了從倉庫部署、軟件包同步到NFS配置和客戶端訪問的全過程,為系統(tǒng)管理員提供了全面的指導(dǎo)
    2025-04-04
  • 完美解決linux下U盤文件只讀的問題

    完美解決linux下U盤文件只讀的問題

    下面小編就為大家?guī)硪黄昝澜鉀Qlinux下U盤文件只讀的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • 在Linux系統(tǒng)上安裝Spring boot應(yīng)用的教程詳解

    在Linux系統(tǒng)上安裝Spring boot應(yīng)用的教程詳解

    這篇文章主要介紹了在Linux系統(tǒng)上安裝Spring boot應(yīng)用,本文通過實(shí)例文字相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • centos系統(tǒng)修改創(chuàng)建文件夾目錄的顯示顏色

    centos系統(tǒng)修改創(chuàng)建文件夾目錄的顯示顏色

    大家應(yīng)該都知道在Linux系統(tǒng)中l(wèi)s文件夾的痛苦我就不說了,為了不傷眼睛,一般ssh終端背景都用的黑色,文件夾又是深藍(lán)色,每次看文件夾都要探頭仔細(xì)去看。這篇文章給大家介紹如何修改改創(chuàng)建文件夾目錄的顯示顏色,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • Ubuntu 14.04設(shè)置開機(jī)啟動(dòng)腳本的方法

    Ubuntu 14.04設(shè)置開機(jī)啟動(dòng)腳本的方法

    這篇文章主要給大家介紹了Ubuntu 14.04設(shè)置開機(jī)啟動(dòng)腳本的方法,文中通過代碼介紹的很詳細(xì),相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-12-12
  • linux下用cron定時(shí)執(zhí)行任務(wù)的方法

    linux下用cron定時(shí)執(zhí)行任務(wù)的方法

    呵呵,比較有用,網(wǎng)上摘抄的。留著備用吧。
    2008-06-06
  • CentOS7—HAProxy安裝與配置詳解

    CentOS7—HAProxy安裝與配置詳解

    這篇文章主要介紹了CentOS7—HAProxy安裝與配置詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • NodeJs在Linux下使用的各種問題解決

    NodeJs在Linux下使用的各種問題解決

    本篇文章主要介紹了NodeJs在Linux下使用的各種問題解決,可以解決各種問題,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • Centos下安裝Ansible的示例代碼

    Centos下安裝Ansible的示例代碼

    本篇文章主要介紹了Centos下安裝Ansible的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04

最新評論

福清市| 抚松县| 柯坪县| 蒙自县| 石屏县| 青铜峡市| 永丰县| 佛冈县| 思南县| 六枝特区| 京山县| 济宁市| 双柏县| 江安县| 琼海市| 通许县| 珠海市| 南陵县| 正蓝旗| 巴林右旗| 崇文区| 千阳县| 格尔木市| 永胜县| 南阳市| 多伦县| 江安县| 泰州市| 平泉县| 田东县| 祁门县| 察雅县| 高青县| 长阳| 凌云县| 常熟市| 镇远县| 调兵山市| 马关县| 酉阳| 惠来县|