sábado, 28 de enero de 2012

Cómo listar el contenido de carpetas del Finder.

¿Alguna vez has tenido la necesidad de imprimir el listado del contenido de una carpeta del Finder de tu Mac? Quede claro que no se trata de hacer una captura de pantalla de la carpeta abierta con la visualización en listado, sino de obtener una lista en modo texto que podamos editar o añadir a un documento. Tal vez te hayas preguntado cómo hacer esto sin teclear manualmente el nombre de los ítems. Los usuarios de Mac más veteranos recordarán que con los sistemas operativos "pre-OSX", como Mac OS9 esto era tan sencillo como elegir en el menú Archivo "Imprimir ventana". Aquellos que hemos buscado formas de hacerlo en Mac OS X hemos encontrado las siguientes alternativas.

¿Alguien se acuerda del "imprimir ventana" de Mac OS9?

Copiando y pegando.
Cuando usas un Mac, las soluciones son a veces muy simples: copias el contenido de la carpeta y lo pegas en un archivo de texto; pero ojo, lo debes pegar "como texto". Si seleccionas y copias el contenido de una carpeta del Finder, y quieres pegar en TextEdit, debes asegurarte de que previamente en el menú Formato has elegido Convertir en texto normal. TextEdit puede guardar documentos en formato RTFD, es decir admite que se le peguen o añadan archivos y aplicaciones como si fuera una carpeta del Finder. Si no convertimos en texto normal se copiarán realmente los archivos en el documento de TextEdit, lo cual puede darnos una sorpresa si esa carpeta en la que elegimos copiar contiene archivos de mucho peso. Por supuesto, también podemos pegar en una hoja de cálculo de Excel o Numbers.
Utilizando una Impresora de Escritorio.
Una impresora de escritorio es el icono correspondiente a una de las impresoras configuradas en nuestro Mac, y a la que podemos arrastrar desde el Finder un documento que queremos imprimir. Curiosamente, si en lugar de un documento arrastramos una carpeta se imprimirá el listado del contenido de esa carpeta. Y sin en lugar de imprimir, elegimos guardar como PDF, obtendremos un achivo PDF del cual podremos copiar el listado que queremos. ¿Que cómo creamos una Impresora de Escritorio? Como decíamos antes, usando un Mac, las soluciones son a veces muy sencillas: arrastrando al Escritorio el icono de la impresora desde la ventana Impresión y Fax de Preferencias del Sistema:


Recurriendo al Terminal.

Por un lado podemos hacer uso del Terminal, solución del agrado de los más geeks, pero poco atractiva para el usuario común. En realidad, es más sencillo de lo que parece. Deberemos abrir una ventana de Terminal (en Aplicaciones / Utilidades) y escribir el comando "cd":
Last login: Sat Jan 28 17:10:36 on ttys000
minimac:~ minimac$ cd

pulsaremos la barra espacio una vez, y arrastraremos el icono de la carpeta que queremos listar a la ventana de Terminal (en el ejemplo, arrastro la carpeta Documentos). La ruta de la carpeta se añadirá automáticamente. A continuación pulsaremos Enter:
Last login: Sat Jan 28 17:10:36 on ttys000
minimac:~ minimac$ cd /Users/minimac/Documents 
minimac:Documents minimac$ 

Ahora escribiremos un nuevo comando:
Last login: Sat Jan 28 17:10:36 on ttys000
minimac:~ minimac$ cd /Users/minimac/Documents 
minimac:Documents minimac$ ls -RF > ~/Desktop/listado_carpeta.txt

Con este comando estamos indicando lo siguiente:
-R hace que el listado abarque las sub-carpetas
-F añade la barra (/ )al final de los nombres de carpeta y un asterisco (*) tras las aplicaciones.
listado_carpeta.txt es el nombre que queremos que tenga el archivo de texto que obtengamos, y podemos escribir otra cosa. Pulsaremos de nuevo Enter.

Veremos aparecer un documento de texto en nuestro escritorio llamado listado_carpeta.txt, en el cual veremos el listado que queríamos:


Adobe Reader/
Datos de usuario de Microsoft/
Elementos convertidos por Roxio/
Microsoft User Data/
My Music/
My Pictures/
My Video/
My Videos/
ScreenSteps Library/
Streamer Videos/
Trabajo/
eBooks/
iChats/
./Adobe Reader:
Legal/

(etc...)

Creando un flujo con Automator.
Automator, en Aplicaciones, nos permite crear flujos de trabajo que podemos guardar como scripts o como aplicaciones. Crear un script con Automator que nos liste el contenido de una carpeta y lo guarde como texto es muy sencillo:

Abrimos Automator y elegimos crear "Nuevo flujo de trabajo".
En el listado de Acciones, Archivos y carpetas, elegiremos Solicitar ítems del Finder.
Luego, Obtener contenido de la carpeta.
Finalmente, en el listado de Acciones, Texto, elegiremos Nuevo archivo de texto.
Sólo queda hacer clic en el botón Ejecutar.

También podemos guardar el flujo como Flujo de trabajo o como Aplicación. De este modo podremos utilizarlo posteriormente cuando lo necesitemos.

Podemos variar el resultado si en la primera acción (Solicitar ítems del Finder) cambiamos el Tipo (Archivos, carpetas o Archivos y carpetas), o en la segunda acción hacemos clic en la casilla de verificación "Repetir en cada carpeta encontrada".

Automator, incluido en Mac OS X, es una herramienta enormemente versátil.

Mediante aplicaciones o utilidades específicas.
Automator nos permite crear nuestra propia aplicación para imprimir listados de archivos, pero existen soluciones de terceros para hacer esto, como Print Window que resulta algo caro a mi gusto (20$) pero ofrece opciones interesantes, como imprimir desde menús contextuales, mediante atajos de teclado, etc... listar subcarpetas o elegir el formato de archivo (Excel, texto...)


Existía una utilidad gratuita parecida llamada PrintFinder, pero que al parecer ha sido discontinuada por su desarrollador, por lo que resulta algo difícil de encontrar, y las descargas disponibles nos fuerzan a una actualización que al parecer ya no existe.