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.