新聞中心
最近需要實(shí)現(xiàn)自動(dòng)化搜尋特定文件夾下的特定文件,并且需要分別保存文件路徑與文件名。算然使用python的walk能夠?qū)崿F(xiàn),但是感覺(jué)復(fù)雜了些。于是想看看linux自帶的命令是否能完成這項(xiàng)工作。

環(huán)境
需要查找的目錄結(jié)構(gòu)如下
. |____test | |____test2.txt | |____test.py | |____test.txt | |____regex.py |____MongoDB | |____.gitignore | |____cnt_fail.py | |____db
目標(biāo)一:獲取所有py文件名
如果只使用find . -name ‘*.py’進(jìn)行查找,得出的結(jié)果是包含路勁的
./test/test.py
./test/regex.py
./MongoDB/cnt_fail.py
我們只需要文件名的話可以使用linux提供的命令basename
利用basename將find的所有搜索結(jié)果進(jìn)行處理我們需要使用find的參數(shù)-exec
最終的命令為:
find . -name ‘*.py’ -exec basename {} \;
結(jié)果:
test.py
regex.py
cnt_fail.py
其中{} 用于與-exec選項(xiàng)結(jié)合使用來(lái)匹配所有結(jié)果,然后支取其文件名。
目標(biāo)二:獲得所有py文件路徑,去重復(fù),刪除開(kāi)頭的“./”字符
linux也有獲取文件路徑的命令dirname
略微修改之前的命令能夠顯示所有文件路徑
find . -name ‘*.py’ -exec dirname {} \;
搜索結(jié)果:
./test
./test
./MongoDB
可以看到路徑存在重復(fù),linux去除重可以利用sort再添加-u參數(shù),-u參數(shù)用于去除排序結(jié)果中的重復(fù)項(xiàng)
我們需要把上一個(gè)命令的輸出傳遞給sort作為輸入,很自然想到了管道
管道命令操作符是:|,它僅能處理經(jīng)由前面一個(gè)指令傳出的正確輸出信息,也就是 standard output 的信息,對(duì)于 stdandard
error 信息沒(méi)有直接處理能力。然后,傳遞給下一個(gè)命令,作為標(biāo)準(zhǔn)的輸入 standard input.
添加sort之后的命令為
find . -name '*.py' -exec dirname {} \; | sort -u
運(yùn)行結(jié)果結(jié)果為:
./MongoDB
./test
最后我們?cè)倮胏ut刪除每一個(gè)路勁之前的./字符,參數(shù)-c3-意思提取字符串(起始位置為1)的第3個(gè)字符到最后的子串
最終命令為:
find . -name '*.py' -exec dirname {} \; | sort -u | cut -c3-
運(yùn)行結(jié)果:
MongoDB
test
本篇文章到此結(jié)束,如果您有相關(guān)技術(shù)方面疑問(wèn)可以聯(lián)系我們技術(shù)人員遠(yuǎn)程解決,感謝大家支持本站!
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
當(dāng)前標(biāo)題:基于linux命令提取文件夾內(nèi)特定文件路徑
新聞來(lái)源:http://fisionsoft.com.cn/article/cdicded.html


咨詢
建站咨詢
