Com bash , GNU find e comm :
comm -12 \
<( find /path/to/CVS/repo -printf '%h\n' \
sort | uniq -u ) \
<( find /path/to/CVS/repo -name Attic -type d -printf '%h\n' | \
sort )
O primeiro find imprime basename s ( -printf '%h\n' ) de tudo, arquivos e diretórios, no repositório. sort | uniq -u , em seguida, imprime diretórios com exatamente um descendente, arquivo ou diretório.
Em seguida, o segundo find imprime os basename s dos diretórios Attic . A interseção desse conjunto com o conjunto acima (ou seja, comm -12 ) são exatamente os diretórios com apenas um Attic descendente.
Isso obviamente ignora coisas como links simbólicos e outros tipos de diversão e nomes de arquivos com novas linhas incorporadas. Você não deve tê-los em um repositório de CVS de qualquer maneira.