列出包含具有特定扩展名的文件的所有目录

时间:2014-02-04 11:26:58

标签: linux grep

我需要在第一级列出包含扩展名为.info的文件的所有目录。

  --contrib
     --abc
       --ab.info 
     --def
       --de.info 
     --xyz
       --ab.gh
       --ab.ij

命令应列出

abc, def

1 个答案:

答案 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

或没有basenamedirname

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,