Shell
列印父目錄查找輸出的完整路徑
我想做的是根據一些搜尋查詢查找所有文件並獲取父父目錄(
../..
)的完整路徑。例如
find . -name "__openerp__.py"
,然後為每個文件執行一些類似(cd ../..; pwd)
. 然後將所有內容通過管道傳輸到uniq
.
假設所有文件名都不包含換行符:
find "$PWD" -name __openerp__.py | awk -F/ -vOFS=/ 'NF-=2' | sort -u
撇開包含換行符的文件名存在問題不談,我能想到一些效率改進:
- 通過
$PWD
直接查找,而不是為每個子shell確定它。這將使find
在其輸出中包含完整路徑。rev
用和刪除父目錄名稱cut
。所以我建議以下內容來獲取包含所需文件的所有目錄的列表:
find "$PWD" -name '__openerp__.py' | rev | cut -d/ -f3- | rev
請注意,
find
它不會對其輸出進行排序,因此應在對其進行排序之前對其進行排序。由於sort
已經支持擠壓相同的元素(-u 開關),因此可以用以下方式回答原始問題:find "$PWD" -name '__openerp__.py' | rev | cut -d/ -f3- | rev | sort -u