Página 3 de 3

Re: Mostrar contenido de directorio en web

NotaPublicado: 2014-07-29 15:02 @668
por explorer
Humm... la solución no es tan obvia... hay que hacer una serie de cambios para que eso funcione.

La siguiente línea funciona en mi ordenador:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. perl -E 'my ($dir, $tamano) = @ARGV; system ("find $dir -size +${tamano}c -type f -exec ls -lhgo {} \\; >html.txt");' /home/explorer/Documentos/Desarrollo/images/ 400
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

He tenido que hacer unos cambios...
  • le he añadido las '{}', por que si no, el 'ls' hace un listado de todos los archivos "por cada archivo que encuentre". Y no queremos eso
  • le he duplicado el '\', por que el efecto de las comillas dobles eliminaba el efecto del primer '\'
  • le he añadido la opción '-type f', para quedarnos solo con los archivos, no con los directorios
Así, desde la línea de comandos, me funciona.

Pero... el mensaje que te sale a ti es muy distinto. Da la sensación de que se está ejecutando un comando 'find' distinto del que pretendes. La pista está en que en el mensaje de error aparece 'sh'. Eso da la idea de que 'find', en realidad, podría ser un script shell.

Entonces, para estar seguros, lo que puedes hacer es ejecutar antes un which find para saber qué es lo que se está ejecutando. En mi ordenador me devuelve '/usr/bin/find', que es lo correcto. A continuación, modifico el programa colocando la ruta absoluta a ese ejecutable:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. perl -E 'my ($dir, $tamano) = @ARGV; system ("/usr/bin/find $dir -size +${tamano}c -type f -exec ls -lhgo {} \\; >html.txt");' /home/explorer/Documentos/Desarrollo/images/ 400
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Y todo este rollo porque no quieres programar en Perl... :( He modificado mi programa anterior para añadirle la opción de grabar la salida a html.txt, que es lo que querías. He tardado mucho menos, y además, no dependo de un programa externo, como 'find'.