LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
123
返回列表 发新帖
楼主: elais

如何列出除了以cfg为后缀名的文件

[复制链接]
发表于 2007-6-9 13:26:57 | 显示全部楼层
Post by Jockey
1. 扩展名错了
2. [color="Blue"]*.cfg 会被shell扩展成该目录下所有以 [color="Blue"].cfg 为后缀的文件,此时grep的工作应该这样的吧:如果存在多于两个这样的文件,相当于在后面的文件内容中搜索符合第一个文件名的字符串,这样根本就忽略了管道来的输入;如果只有一个文件,那么同样是在送来的输入中匹配该文件名字符串;如果没有这样的文件,grep报错。兄弟是把regex和globbing混淆了并且忽略了shell对元字符的解释了吧?

这个命令我想,并且尝试了一下,不会工作。


呵呵,谢谢 知道了. 系统没装好,还没法子细看,晚上再说咯.
回复 支持 反对

使用道具 举报

发表于 2007-6-10 10:21:34 | 显示全部楼层
ls -l|grep -v '\.cfg$'|awk '{ print $8 }'  显示当前目录下不以.cfg结尾的文件
回复 支持 反对

使用道具 举报

发表于 2007-6-10 11:02:34 | 显示全部楼层
根本不需要awk,为什么都喜欢用awk...-_-||
回复 支持 反对

使用道具 举报

发表于 2007-6-10 12:33:26 | 显示全部楼层
因为不用awk的话,显示的是长列表,用awk,只是打印出文件名而已,其他的东西就不要了 :)
回复 支持 反对

使用道具 举报

发表于 2007-6-10 13:51:37 | 显示全部楼层
那是设计方案的问题...ls和grep足以应付,没必要再fork出一个进程
回复 支持 反对

使用道具 举报

发表于 2007-6-10 14:04:10 | 显示全部楼层
我理解有误

ls | grep -v "\.cfg$"  也一样的会输出文件名

我以为ls 输出的是以空格或者tab分隔的文件名列表,偶然的有一次做 ls > 1.txt 然后cat 1.txt发现是以行分隔符导出的
回复 支持 反对

使用道具 举报

发表于 2007-6-10 22:16:04 | 显示全部楼层
可以用zsh
文件名扩展功能非常强大。
好像是ls !(*.cfg)
回复 支持 反对

使用道具 举报

发表于 2007-6-11 08:12:43 | 显示全部楼层
Post by aerofox
可以用zsh
文件名扩展功能非常强大。
好像是ls !(*.cfg)


让人换shell,似乎不是解决问题的正道
回复 支持 反对

使用道具 举报

发表于 2007-6-12 04:56:17 | 显示全部楼层
Post by Jockey
那是设计方案的问题...ls和grep足以应付,没必要再fork出一个进程

同意

ls -1 | grep -v '\.cfg$'

就可以只显示文件名了,注意是数字1,不是字母l
回复 支持 反对

使用道具 举报

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

本版积分规则

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