Shell

列印父目錄查找輸出的完整路徑

  • January 30, 2014

我想做的是根據一些搜尋查詢查找所有文件並獲取父父目錄(../..)的完整路徑。

例如find . -name "__openerp__.py",然後為每個文件執行一些類似(cd ../..; pwd). 然後將所有內容通過管道傳輸到uniq.

假設所有文件名都不包含換行符:

find "$PWD" -name __openerp__.py  | awk -F/ -vOFS=/ 'NF-=2' | sort -u

撇開包含換行符的文件名存在問題不談,我能想到一些效率改進:

  1. 通過$PWD直接查找,而不是為每個子shell確定它。這將使find在其輸出中包含完整路徑。
  2. 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

引用自:https://unix.stackexchange.com/questions/111466