基于linux命令提取文件夾內(nèi)特定文件路徑
最近需要實現(xiàn)自動化搜尋特定文件夾下的特定文件,并且需要分別保存文件路徑與文件名。算然使用python的walk能夠?qū)崿F(xiàn),但是感覺復雜了些。于是想看看linux自帶的命令是否能完成這項工作。
環(huán)境
需要查找的目錄結(jié)構(gòu)如下
. |____test | |____test2.txt | |____test.py | |____test.txt | |____regex.py |____MongoDB | |____.gitignore | |____cnt_fail.py | |____db
目標一:獲取所有py文件名
如果只使用find . -name '*.py'進行查找,得出的結(jié)果是包含路勁的
./test/test.py
./test/regex.py
./MongoDB/cnt_fail.py
我們只需要文件名的話可以使用linux提供的命令basename
利用basename將find的所有搜索結(jié)果進行處理我們需要使用find的參數(shù)-exec
最終的命令為:
find . -name '*.py' -exec basename {} \;
結(jié)果:
test.py
regex.py
cnt_fail.py
其中{} 用于與-exec選項結(jié)合使用來匹配所有結(jié)果,然后支取其文件名。
目標二:獲得所有py文件路徑,去重復,刪除開頭的“./”字符
linux也有獲取文件路徑的命令dirname
略微修改之前的命令能夠顯示所有文件路徑
find . -name '*.py' -exec dirname {} \;
搜索結(jié)果:
./test
./test
./MongoDB
可以看到路徑存在重復,linux去除重可以利用sort再添加-u參數(shù),-u參數(shù)用于去除排序結(jié)果中的重復項
我們需要把上一個命令的輸出傳遞給sort作為輸入,很自然想到了管道
管道命令操作符是:|,它僅能處理經(jīng)由前面一個指令傳出的正確輸出信息,也就是 standard output 的信息,對于 stdandard
error 信息沒有直接處理能力。然后,傳遞給下一個命令,作為標準的輸入 standard input.
添加sort之后的命令為
find . -name '*.py' -exec dirname {} \; | sort -u
運行結(jié)果結(jié)果為:
./MongoDB
./test
最后我們再利用cut刪除每一個路勁之前的./字符,參數(shù)-c3-意思提取字符串(起始位置為1)的第3個字符到最后的子串
最終命令為:
find . -name '*.py' -exec dirname {} \; | sort -u | cut -c3-
運行結(jié)果:
MongoDB
test
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
CentOS 7.6安裝MySQL 5.7 GA版的教程圖解
本文通過圖文并茂的形式給大家介紹了CentOS 7.6安裝MySQL 5.7 GA版,需要的朋友可以參考下2019-09-09CentOS6.5環(huán)境下使用rsync增量同步備份文件的方法
這篇文章主要介紹了CentOS6.5環(huán)境下使用rsync增量同步備份文件的方法,結(jié)合實例形式分析了rsync進行文件同步備份操作的相關(guān)命令與使用技巧,需要的朋友可以參考下2018-04-04linux網(wǎng)絡知識詳解:iptables 規(guī)則介紹
這篇文章主要介紹了linux網(wǎng)絡知識詳解:iptables 規(guī)則介紹,需要的朋友可以參考下2024-02-02Linux查看系統(tǒng)文件打開數(shù)的方法小結(jié)
有許多情況下,我們需要查看一個進程當前打開了哪些文件,反過來我們也希望知道某一個文件正在被哪些進程所讀寫,在Linux下有許多有用的工具可以幫我們完成這兩個工作,本文給大家介紹了Linux查看系統(tǒng)文件打開數(shù)的方法小結(jié),需要的朋友可以參考下2024-07-07apache的AllowOverride以及Options使用詳解
通常利用Apache的rewrite模塊對 URL 進行重寫的時候, rewrite規(guī)則會寫在 .htaccess 文件里。但要使 apache 能夠正常的讀取.htaccess 文件的內(nèi)容,就必須對.htaccess 所在目錄進行配置2012-11-11Linux系統(tǒng)管理常用命令及參數(shù)說明中文版
這篇文章主要介紹了Linux系統(tǒng)管理常用命令及其參數(shù)的中文版說明,方便了英文不好的同學學習Linux,需要的朋友可以參考下2014-03-03linux Jenkins配置salve節(jié)點實現(xiàn)過程圖解
這篇文章主要介紹了linux Jenkins配置salve節(jié)點實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08