从csh shell中的路径中提取文件名 - 来自文件列表

时间:2009-09-30 14:56:24

标签: linux shell csh

如何从路径中提取文件名;我有一个文件列表。我正在使用csh shell,并安装了awk,sed,perl。

/ dfgfd / dfgdfg /文件名

应该给我

文件名

我尝试过basename:

    find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h'
 | xargs grep -l pattern | xargs basename

它给了我以下错误:

basename:参数太少了 请尝试使用`basename --help'获取更多信息。

THX

4 个答案:

答案 0 :(得分:9)

标准计划basename可以满足您的需求:

$ basename /dfgfd/dfgdfg/filename
filename

答案 1 :(得分:1)

这种解决方法对我有用。你说你有perl所以这应该运行。它将所有非空格文本替换为最后一个/没有任何内容(有效地删除它)。

find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h'
 | xargs grep -l pattern | perl -pi -e "s/\S+\///g"

答案 2 :(得分:0)

好的,我找到了一个使用AWK的好解决方案:

    find  $PROJECT_DIR  -name '*.c' -o -name '*.cc' -o -name '*.h' 
| xargs grep -l PATTERN | awk -F "/" '{print $NF}'

答案 3 :(得分:0)

find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h' | xargs grep -l pattern 
| xargs -n1 basename

试试这个!!

作为basename的respet单路径参数作为参数,因此我们强制xargs逐个拆分它。