我需要在第一级列出包含扩展名为.info的文件的所有目录。
--contrib
--abc
--ab.info
--def
--de.info
--xyz
--ab.gh
--ab.ij
命令应列出
abc, def
答案 0 :(得分:4)
如果从contrib目录运行它,这应该有效:
find . -maxdepth 2 -name "*.info" -exec dirname {} \;
如果你真的想从contrib的父版运行它,那么需要更多的调整。
以上将给你:
./abc
./def
这不完全是你想要的。所以更像这样的事情会有所帮助:
find . -maxdepth 2 -name "*.info" -exec sh -c 'F=$(dirname {}) ; basename $F' \;
它更复杂,但结果是:
abc
def
或没有basename
和dirname
:
find . -maxdepth 2 -name "*.info" -exec bash -c '[[ {} =~ .*/(.*)/.* ]] && echo ${BASH_REMATCH[1]}' \;
或sed
:
find . -maxdepth 2 -name "*.info" -exec echo {} + | sed 's|./\(\S*\)/\S*|\1,|g'
结果:
abc, def,