2017-01-06 26 views
0

我正在查找只搜索目錄的csh命令。
我知道目錄的名稱(MY_DIR),但是我完全忽略了它們當前目錄下的距離。csh find命令:如何獲取最上面的目錄

我想下面的命令:

  • 了的情況下,它結束了對不可訪問的目錄沒有錯誤信息;
  • 給出了一個空字符串,以防它找不到目錄;
  • 只要找到目錄的第一個匹配項就立即退出搜索;
  • 優先考慮最上面的目錄。

我以爲find是一個正確的命令,我用它是這樣的:

find . -type d ! -perm -a+r -prune -o \(-type d -o -type l \) -name MY_DIR -print -quit 

是目錄結構如下

DIR_A0/DIR_A1/DIR_A2/MY_DIR 
DIR_B0/DIR_B1/MY_DIR 

的結果是:

DIR_A0/DIR_A1/DIR_A2/MY_DIR 

我寧願喜歡:

DIR_B0/DIR_B1/MY_DIR 

我不知道是否有人可以給我任何關於如何分類這件事的建議。

提前

回答

0

的「至上」目錄許多感謝的是一個具有最少/字符。

Borrowing from this answer,我們可以通過輸出管道,以awk得到這樣的:

find . -name MY_DIR |\ 
    awk -F/ 'BEGIN { depth=100; } depth > NF { depth=NF; dir=$0; } END { print dir }' 

需要注意的是,你會想從您find命令刪除-quit選項。 AFAIK有沒有辦法做到這一點只是找到,因爲find簡單查找路徑,因爲它們存儲在文件系統(可以以任何順序)。您需要需要才能獲得完整列表。

相關問題