2013-02-25 53 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