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/
答案 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
执行您想要的操作,无需过滤掉./
,因为隐藏的目录未按*/
展开