2013-08-02 253 views
2

在Unix中,如果子目錄存在,是否可以使用一個命令列出目錄?存在子目錄的unix ls目錄

例如,我想列出的目錄名稱,如果它包含一個名爲「division_A」的子目錄

/data/data_file/form_100/division_A 
/data/data_file/form_101/division_A 
/data/data_file/form_102/division_A 

期望的結果將是

form_100 
form_101 
form_102 

我只能用2命令行來實現目標。

cd /data/data_files 
echo `ls -d */division_A 2> /dev/null | sed 's,/division_A,,g'` 

所以我想問問有沒有人可以用一個命令來執行它。

非常感謝!

+0

unix的美妙之處在於它爲您提供了一組構建塊。您可以編寫一個工具來執行您想要的任何操作,然後將其作爲單個命令調用。 –

回答

3

使用find

find /data/data_file -type d -name division_A -exec sh -c 'basename `dirname {}`' \; 2> /dev/null 
+0

想添加'| uniq'? – mabi

+0

@mabi,爲什麼添加'| uniq'? – falsetru

+0

唉,我不好。我誤解任務的意思是「包含任何目錄」,在這種情況下,您可能會得到重複的基本路徑。 – mabi

0

如果你不介意的怪異..,你可以做:

$ ls -d /data/data_file/*/division_A/.. 

它將輸出類似/data/data_file/form_100/division_A/..,你可以像普通文件夾訪問。