linux - grep - 一个简单的行尾问题

标签 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/

最佳答案

这应该有效:

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 做你想做的,不需要过滤掉 ./ 因为隐藏目录不会被 */
  • 展开

关于linux - grep - 一个简单的行尾问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42725096/

相关文章:

java - 奇怪的行为在循环中重新运行java应用程序

java - ArchLinux/CentOS 中 RMI Naming.rebind() 中的 MalformedURLException

linux - 空字符串作为 Cut 的输出字段分隔符

linux - 为什么在将 ls 传输到 mkdir 时会出现奇怪的类似时间戳的包含?

Linux 脚本无法通过 crontab 删除文件,但它可以手动工作

c++ - 运营商不匹配>>问题

windows - 如何使用 ANT 从 Windows XP 系统执行 UNIX 命令

awk - 如果第二行为空则打印文件名

linux - Bash 提取某些标签之间的所有行

linux - grep 基于时间戳的文件