LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1327|回复: 8

如何使用sed在路径中取出目录名?

[复制链接]
发表于 2007-6-12 10:37:01 | 显示全部楼层 |阅读模式
设有一个文件:

/home/a/b/c/d/file1.txt
/home/a/b/c/d/file2.bin
/home/a/b/c/d/file3.asi

想处理过后变为:

/home/a/b/c/d
/home/a/b/c/d
/home/a/b/c/d

即把目录名取出来,请问该怎么写?
发表于 2007-6-12 10:39:35 | 显示全部楼层
不用sed行不行?dirname (1)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-12 10:49:35 | 显示全部楼层
谢谢!你不说我还真不知道还有dirname这个命令

只是怎么把文件列表重定向给dirname啊,比如说file.list里包含了很多文件名,怎么让dirname一次处理了呢?


cat file.list | dirname

不起作用。
回复 支持 反对

使用道具 举报

发表于 2007-6-12 11:57:38 | 显示全部楼层
一行行读

while read line; do
dirname $line
done <file
回复 支持 反对

使用道具 举报

发表于 2007-6-12 21:10:52 | 显示全部楼层
那还不如用sed...-_-||
  1. sed -n 's:/[^/]*$::p' filename
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-6-13 03:49:14 | 显示全部楼层
看看xargs命令
回复 支持 反对

使用道具 举报

发表于 2007-6-14 17:42:30 | 显示全部楼层
Jockey兄,为什么结果是/home/a/b/c/d,而不是/home/a/b/c/d/ 呢?
回复 支持 反对

使用道具 举报

发表于 2007-6-14 19:08:25 | 显示全部楼层
因为这是楼主的要求...-_-||
Post by 水星
...
想处理过后变为:

/home/a/b/c/d
/home/a/b/c/d
/home/a/b/c/d
...
要保留slash也很容易啊,把regex里第一个“/”去掉不久成了...
回复 支持 反对

使用道具 举报

发表于 2007-6-15 09:17:20 | 显示全部楼层
Post by Jockey
因为这是楼主的要求...-_-||

要保留slash也很容易啊,把regex里第一个“/”去掉不久成了...


多谢!没有看仔细
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表