2013-02-25 35 views
0

使用循環讀取,直到目錄結構末端的完整路徑,我有以下目錄結構 /home/ABCD/apple/ball/car/divider.txt/家/ ABCD這就像我的應用程序的根目錄,我可以很容易地得到,並從那裏所有的子文件夾可能會有所不同,因此我正在尋找一個通用的程序,我可以通過一些循環提取路徑如何在腳本

我想將目錄結構解壓縮爲一個單獨的變量,如「/ home/ABCD/apple/ball/car /」 任何人都可以幫我

示例2:/home/ABCD/adam/nest/mary/user.txt 變量應獲得以下價值 - 「的/ home/ABCD /亞當/窩/瑪麗/」

回答

1

使用dirname

$ dirname /home/ABCD/apple/ball/car/divider.txt 
/home/ABCD/apple/ball/car 

要做到

var=$(dirname /home/ABCD/apple/ball/car/divider.txt) 
echo "$var" 

不能有空格前後分配給變量=

+0

當我開始,我不會是具有完整path /home/ABCD/apple/ball/car/divider.txt,我需要從/ home/ABCD開始並移動到en d的結構並提取完整的路徑,是否有一種簡單的方法來遍歷文件夾結構的末尾,因爲文件夾strcuture會根據每個請求進行更改 – gmhk 2013-02-25 09:28:40

+0

不知道你在做什麼。如果你想要在你家中的所有目錄,找'$ HOME -type d'。如果你想修剪前綴,請執行'(cd $ HOME; find。-type d)' – user000001 2013-02-25 10:41:21

1

是否需要結束斜線/,你可以挑一個:

kent$ echo "/home/ABCD/adam/nest/mary/user.txt"|grep -Po '.*/'   
/home/ABCD/adam/nest/mary/ 

kent$ echo "/home/ABCD/adam/nest/mary/user.txt"|sed -r 's#(.*/).*#\1#' 
/home/ABCD/adam/nest/mary/ 

kent$ echo $(dirname /home/ABCD/adam/nest/mary/user.txt)"/" 
/home/ABCD/adam/nest/mary/ 
+0

當我開始時,我不會有完整路徑/home/ABCD/apple/ball/car/divider.txt,我需要從/ home/ABCD開始,直到結構結束並提取完整路徑,有沒有簡單的方法可以從/ home/ABCD遍歷到文件夾結構的末尾,因爲文件夾結構會根據每個請求 – gmhk 2013-02-25 09:29:48