linux grep -d skip/skip/recurse 是读目录文件采取读或者跳过,我感觉这个没有用啊,用了和没用一样!
展开全部
个人理解,举例子,过滤关键字'DEVICE=ens33',过滤位置/etc/* ,就是在/etc/目录下过滤出关键字'DEVICE=ens33'的行
# read 读取
[root@localhost ~ ] # grep -d read 'DEVICE-ens33' /etc/*
会发现得到很多:grep: /etc/xxx: Is a directory,我给的范围是/etc/*,grep过滤字符时肯定要打开文件读取到数据吧,而我给的路径有的目录,目录怎么读取,所以读目录的时候会报错,那么我认为read是默认的模式,并且不会过滤子目录内的文件!
# recurse 递归
[root@localhost ~ ] # grep -d recurse 'DEVICE=ens33' /etc/*
得到结果:/etc/sysconfig/network-scripts/ifcfg-ens33:DEVICE=ens33发现,过滤的路径不再是/etc/xxx,而是将/etc/所有的目录包括子目录都在过滤范围内了,而没有提示xxx Is a directory,可能是读取子目录时发现是目录,就进到子目录在进行过滤 [0_0]异想天开,反正,这不就是递归了嘛。
# skip 跳过
[root@localhost ~ ] # grep -d skip 'DEVICE=ens33' /etc/*
# 发现什么都没有,而我使用
[root@localhost ~ ] # grep -d skip '/root:/bin/bash' /etc/*
# 结果如下
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd-:root:x:0:0:root:/root:/bin/bash
发现了当我使用skip这个选项,只有/etc/xxx这级目录能被过滤出来,发现它并没有递归了,并且没有提示xxx Is a directory。从字面意思上看,skip,貌似是目录的话就跳过了。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询