2016-04-26 46 views
1

我有主目錄REPORT內的子目錄。子目錄如TEST,TEST_LNK,FAIL, FAIL_LNK,PASS, GOOD,GOOD_LNK如何獲得只選擇的目錄名稱

現在我需要名稱中沒有_LNK的子目錄。

例子:

我只需要這些目錄TEST,FAIL,PASS,GOOD

我有一個代碼,將給主目錄內的所有子目錄。

ls -lrt | egrep '^d' | awk '{print $9}

誰能幫我通過上面的命令修改得到與出_LNK子目錄?

+0

只需對命令進行最小限度的修改,添加:'| grep -v「_LNK」' –

+0

當我用'ls -lrt | egrep'^ d'| awk'{print $ 9} | grep -v「_LNK」'它沒有給出任何輸出。我希望子目錄列表存在於父目錄'REPORT'中,其子目錄不以'_LNK'結尾 – teepu

+0

您確定有沒有「_LNK」的子文件夾?你可以請發佈你的原始命令的結果(沒有grep -v)嗎? –

回答

2

這會幫助你

ls -lrt | grep -v '_LNK' 
+0

我希望子目錄的列表存在於父目錄REPORT中,其中子目錄的名稱不以'_LNK結尾' – teepu

2

ls具有避免不必要的輸出--hide參數。使用如下:

ls --hide='*_lnk' 
1

作爲替代你的命令,你可以使用find遞歸找到所有子目錄,然後使用grep選擇您想要的那些:

find . -type d -exec echo {} \; | grep -v "_LNK" 

這裏的相關選項分別是:

  • -type d:選擇類型目錄的文件只有
  • -exec:執行以下命令

"{}"是佔位符相匹配的文件,而"\;"告訴找到其中的命令結束。


另一種選擇(由託比·斯佩特的意見建議)是做所有找到工作,使用'!'否定的-name選項:

find . -type d '!' -name '*_LNK' 

此外,也沒什麼看頭,有是允許設置遞歸級別的maxdepth選項:-maxdepth 1表示僅在子目錄(一級)中進行搜索。