从 csh shell 中的路径中提取文件名 -- 从文件列表中
如何从路径中提取文件名;我有一个文件列表。我使用 csh shell,并安装了 awk、sed、perl。
/dfgfd/dfgdfg/filename
应该给我
文件名
我尝试了 basename: ,
find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h'
| xargs grep -l pattern | xargs basename
它给了我以下错误:
basename: 参数太少 尝试“basename --help”以获取更多信息。
谢谢
How to extract filename from the path; i have a list of files. I'm using csh shell, and have awk, sed, perl installed.
/dfgfd/dfgdfg/filename
should give me
filename
I tried basename:
find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h'
| xargs grep -l pattern | xargs basename
and it gave me the following error:
basename: too few arguments
Try `basename --help' for more information.
thx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
标准程序
basename
执行您想要的操作:The standard program
basename
does what you want:这种解决方法对我有用。你说你有 perl 所以这应该运行。它将所有非空格文本替换为最后一个 / ,没有任何内容(有效地删除它)。
This kind of workaround worked for me. You said you had perl so this should run. It replaces all nonspace text up to the last / with nothing (effectively deleting it).
好吧,我使用 AWK 找到了一个很好的解决方案:
Ok I found a nice solution using AWK:
试试这个!
as basename 接受单个路径参数作为参数,因此我们强制 xargs 将其一一分割。
try this !!
as basename accepet single path parameter as argument, so we force xargs to split it one by one.