2006/04/14

Como generar una lista de directorios que contengan sólo un archivo

Luego de tres días que me tomó unificar con Unipage 1500 páginas web completas, lo que me restaba era optimizar el árbol de directorios para que no haya directorios que contengan sólo un archivo, donde anteriormente se alojaba un archivo html y su correspondiente directorio de imágenes y demás extras.

Para hacerlo de una forma eficiente, sin tener que recorrer todos los directorios del árbol, en busca de los que contienen sólo un archivo, se me ocurrió generar de la forma más automática posible, una lista de los directorios que contienen sólo un archivo, ordenada albabeticamente por su senda.

Los pasos que seguí para generar dicha lista fueron los siguientes:
  1. Abrir una ventana de línea de comandos en D:\.
  2. Generar una lista recursiva de sendas de directorios; remover la mayoría de las líneas que contengan una cuenta de archivos superior a uno; remover las líneas que contengan detalles de archivo:
    dir /s /a-d /ogn | findstr /v /r [ 0123456789][023456789].archivos" | findstr /v /r "\/" > distill1.txt
  3. Remover manualmente de distill1.txt todas las sendas de directorios remanentes que cuenten más de un archivo o no tengan su correspondiente línea de cuenta.
  4. Remover todas las líneas que contengan la cadena "archivos":
    find /v "archivos" distill1.txt > distill2.txt
  5. Ordenar las sendas de directorios restantes que contienen sólo un archivo:
    sort distill2.txt > distill3.txt