grep - 一个简单的行尾问题

时间:2017-03-10 18:11:14

标签: linux unix grep

ls -alp $base/$currentDir |  awk '{print $9}'  | grep '/' | egrep -v '^t|^tz$|^html$|^\.'

我有这个grep,我试图忽略与“t”“tz”或“html”目录全名的匹配。 一切都很好,除了^ html $不匹配,而^ html确实匹配,相同的^ tz $不匹配 - 不知何故$ $不被识别为行尾。 ^作为行的起点很好。

我真的想知道上面的答案,其次,是否有不同的方法来获取给定目录中所有子目录的列表?

我发现ls -d但是没有使用目录参数?:

ls -d * /
/  arch  index.html

工作正常 但不成功的尝试:

abc> ls -d * /
/  arch  index.html
abc> ls -d ../../arizona /
../../arizona  /
abc> ls -d ../../arizona  
../../arizona
abc ls -d '../../arizona'
../../arizona
abc> ls -d '../../arizona' /
../../arizona  /

虽然这是布局

abc> ls -alp ../../arizona | grep '/'
drwxr-xr-x   7 roberto007 inetuser  4096 Jan 26 11:16 ./
drwxr-xr-x 205 roberto007 inetuser 28672 Mar 10 11:07 ../
drwxr-xr-x   3 roberto007 inetuser  4096 Jan 26 11:17 grand-canyon/
drwxr-xr-x   3 roberto007 inetuser  4096 Jan 26 11:16 havasu-falls/
drwxr-xr-x   2 roberto007 inetuser 28672 Feb 27  2014 html/
drwxr-xr-x   4 roberto007 inetuser  4096 Jan 26 11:17 sedona/
drwxr-xr-x   3 roberto007 inetuser  4096 Jan 26 11:16 superstitions/

1 个答案:

答案 0 :(得分:1)

这应该有效:

cd $base/$currentDir
printf '%s\n' */ | egrep -v '^t|^tz/$|^html/$'

printf '%s\n' $base/$currentDir/*/ | egrep -v '^t|^tz/$|^html/$'
  • */仅列出目录
  • printf '%s\n'在每个目录之后添加换行符
  • egrep执行您想要的操作,无需过滤掉./,因为隐藏的目录未按*/展开