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/