一種基于shell下查找指定目錄下所有文件的遍歷方法
【專利摘要】本發(fā)明提供一種基于SHELL下查找指定目錄下所有文件的遍歷方法,方法如下:對第一層目錄下的文件進行并行處理;對每層目錄下的文件分目錄和非目錄文件處理;對非目錄文件運行l(wèi)s–al命令進行處理;用find命令查找目錄文件則進行遞歸處理;將最終遍歷結(jié)果進行處理;本發(fā)明和現(xiàn)有技術(shù)相比,提供一種不必該個文件進行遍歷,而是將文件進行分類,利用目錄與非目錄目錄的不同處理方法,對文件的信息進行處理,同時運用并行處理方法代替常規(guī)的串行處理方式,來提高查找的時間效率。該方法運用簡單的常用處理命令進行組合,來實現(xiàn)對常規(guī)目錄遍歷方式的整改,提供一種較為靈活的方法。
【專利說明】—種基于SHELL下查找指定目錄下所有文件的遍歷方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機【技術(shù)領(lǐng)域】,具體地說是一種基于SHELL下查找指定目錄下所有文件的遍歷方法。
【背景技術(shù)】
[0002]在Iinux下,對于查找文件來說,shell命令能及運用命令組成腳本的方式相比C語言來說其效率遠遠高于,其直接調(diào)用系統(tǒng)方式的方法提供了更快的便捷性。在查找下,對某個目錄下的所有文件進行遍歷是有時會遇到的情況,其查找方法不能通過普通的find查找文件方式,而必須對所有文件進行遍歷,來獲取每一個文件的相關(guān)信息。在常規(guī)遍歷方式中,對每一層目錄下的每一個文件都需要進行判斷是否滿足查詢條件,這樣的方式對大文件數(shù)據(jù)來說,其效率的執(zhí)行度很低。該方法是一種巧用find的查詢方式,既能獲取所有文件的相關(guān)信息,又可大服提高查詢處理的效率。
[0003]傳統(tǒng)的方法是通過對一層目錄下的所有文件一一進行判斷,若為目錄,則遞歸進入下一層目錄,若為非目錄文件,則進行處理,處理分為對常規(guī)文件的處理,及鏈接文件,塊文件等的處理,這樣的方式每個文件都需要進行邏輯判斷是否滿足所要查詢的文件類型,而后才能進行下一步的處理。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是克服現(xiàn)有技術(shù)中存在的不足,提供一種基于SHELL下查找指定目錄下所有文件的遍歷方法,在shell腳本編程過程中,會有對某個目錄下的所有文件進行遍歷以進行進一下的某些操作。
[0005]本發(fā)明的技術(shù)方案是按以下方式實現(xiàn)的,方法如下:
1)對第一層目錄下的文件進行并行處理;
2)對每層目錄下的文件分目錄和非目錄文件處理;
3)對非目錄文件運行Is- al命令進行處理;
4)用find命令查找目錄文件則進行遞歸處理;
5)將最終遍歷結(jié)果進行處理;
查找過程可巧用進程后臺并發(fā)執(zhí)行的特點,對第一層信息進行并發(fā)處理提高效率,只對第一層處理考率至后續(xù)信息組合的復雜度;
本發(fā)明的優(yōu)點是:
本發(fā)明的一種基于SHELL下查找指定目錄下所有文件的遍歷方法和現(xiàn)有技術(shù)相比,提供一種不必該個文件進行遍歷,而是將文件進行分類,利用目錄與非目錄目錄的不同處理方法,對文件的信息進行處理,同時運用并行處理方法代替常規(guī)的串行處理方式,來提高查找的時間效率。該方法運用簡單的常用處理命令進行組合,來實現(xiàn)對常規(guī)目錄遍歷方式的整改,提供一種較為靈活的方法。
【具體實施方式】
[0006]下面對本發(fā)明的一種基于SHELL下查找指定目錄下所有文件的遍歷方法作以下詳細說明。
[0007]本發(fā)明的一種基于SHELL下查找指定目錄下所有文件的遍歷方法,方法如下:
1)對第一層目錄下的文件進行并行處理;
2)對每層目錄下的文件分目錄和非目錄文件處理;
3)對非目錄文件運行Is- al命令進行處理;
4)用find命令查找目錄文件則進行遞歸處理;
5)將最終遍歷結(jié)果進行處理;
查找過程可巧用進程后臺并發(fā)執(zhí)行的特點,對第一層信息進行并發(fā)處理提高效率,只對第一層處理考率至后續(xù)信息組合的復雜度;
對每一層目錄下的文件不必再挨個進行判斷,而是直接區(qū)分目錄文件與非目錄文件,這樣對非目錄文件的處理則可以進行統(tǒng)一化,既可得到正確信息,更可提高效率。
[0008]該方法通過以下相關(guān)命令來實現(xiàn):
Dfind命令
find命令是比較常用的查找命令,此方法中僅利用find查找命令中的查找目錄功能。
[0009]find 目錄-maxdepth 1-type d | sed,Id,
說明:此語句find段意義為查找當前層目錄下的所有目錄文件,sed ’Id’是對查找結(jié)果的第一條無效信息進行處理。
[0010]2) Is 命令
Is命令是常規(guī)的顯示文件信息命令,其豐富的查找屬性為該提供了依據(jù)。
[0011]Is -aI 目錄 I sed ~r "Id;廠d/d;廠 1/d;"
說明:此語句Is段意義為對當前層目錄下的所有文件獲取信息,sed -r "Id;廠d/d;/~l/d;"是對結(jié)果中的第一條無效信息,以及目錄文件,鏈接文件進行屏蔽處理。
[0012]3 ) &后臺并行執(zhí)行命令
((scandir $1;echo 1>> lflag.txt ) & )
說明:對第一層目錄下的目錄進行遞歸查詢,并放于后臺運行,則各子目錄是并行執(zhí)行的,而不是必須前一個完成,后一個再執(zhí)行的串行處理。
[0013]本發(fā)明的一種基于SHELL下查找指定目錄下所有文件的遍歷方法其加工制作非常簡單方便,按照說明書所示即可加工。
[0014]除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
【權(quán)利要求】
1.一種基于SHELL下查找指定目錄下所有文件的遍歷方法,其特征在于方法如下: 1)對第一層目錄下的文件進行并行處理; 2)對每層目錄下的文件分目錄和非目錄文件處理; 3)對非目錄文件運行Is- al命令進行處理; 4)用find命令查找目錄文件則進行遞歸處理; 5)將最終遍歷結(jié)果進行處理; 查找過程可巧用進程后臺并發(fā)執(zhí)行的特點,對第一層信息進行并發(fā)處理提高效率,只對第一層處理考率至后續(xù)信息組合的復雜度。
【文檔編號】G06F17/30GK104408140SQ201410717161
【公開日】2015年3月11日 申請日期:2014年12月3日 優(yōu)先權(quán)日:2014年12月3日
【發(fā)明者】邢乃棟 申請人:浪潮集團有限公司