Linux提取文件夹中文件名,linux命令提取文件夹内特定文件的路径与文件名
最近需要實現自動化搜尋特定文件夾下的特定文件,并且需要分別保存文件路徑與文件名。算然使用python的walk能夠實現,但是感覺復雜了些。于是想看看linux自帶的命令是否能完成這項工作。
環境
需要查找的目錄結構如下
. |____test | |____test2.txt | |____test.py | |____test.txt | |____regex.py |____MongoDB | |____.gitignore | |____cnt_fail.py | |____db
目標一:獲取所有py文件名
如果只使用find . -name '*.py'進行查找,得出的結果是包含路勁的
./test/test.py
./test/regex.py
./MongoDB/cnt_fail.py
我們只需要文件名的話可以使用linux提供的命令basename 利用basename將find的所有搜索結果進行處理我們需要使用find的參數-exec 最終的命令為: find . -name '*.py' -exec basename {} \; 結果:
test.py
regex.py
cnt_fail.py
其中{} 用于與-exec選項結合使用來匹配所有結果,然后支取其文件名。
目標二:獲得所有py文件路徑,去重復,刪除開頭的“./”字符
linux也有獲取文件路徑的命令dirname 略微修改之前的命令能夠顯示所有文件路徑
find . -name '*.py' -exec dirname {} \;
搜索結果:
./test
./test
./MongoDB
可以看到路徑存在重復,linux去除重可以利用sort再添加-u參數,-u參數用于去除排序結果中的重復項 我們需要把上一個命令的輸出傳遞給sort作為輸入,很自然想到了管道
管道命令操作符是:|,它僅能處理經由前面一個指令傳出的正確輸出信息,也就是 standard output 的信息,對于 stdandard error 信息沒有直接處理能力。然后,傳遞給下一個命令,作為標準的輸入 standard input.
添加sort之后的命令為
find . -name '*.py' -exec dirname {} \; | sort -u
運行結果結果為:
./MongoDB
./test
最后我們再利用cut刪除每一個路勁之前的./字符,參數-c3-意思提取字符串(起始位置為1)的第3個字符到最后的子串 最終命令為:
find . -name '*.py' -exec dirname {} \; | sort -u | cut -c3-
運行結果:
MongoDB
test
總結
以上是生活随笔為你收集整理的Linux提取文件夹中文件名,linux命令提取文件夹内特定文件的路径与文件名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: app首页新解读:如何设计总有一款你喜欢
- 下一篇: linux打开文件夹所有文件名,获取文件