La siguiente línea funciona en mi ordenador:
Using bash Syntax Highlighting
- 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.004 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
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:
Using bash Syntax Highlighting
- 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'.