Propongo un juego.....

Se trata de proponer el resultado de una orden de UNIX (vamos, lo que se tiene que hacer) y el siguiente debera postear el resultado junto a la orden (copiandolo desde la consola). La orden sera SOLO UNA LINEA DE CODIGO (nada de shell scripting :P). El que conteste correctamente propondra otro nuevo resultado para que los demas le contestemos.

Empezamos con una facilita: Sacar un listado de los archivos de un directorio, enviarlo a un archivo y que por la pantalla saque el nombre de un solo directorio (el que mas os guste XD).

Salu2!
xilixi escribió:ls > listado |more


Nop :P Tiene que mandar la salida del ls a un fichero y despues filtrarse para que saque por pantalla un directorio (el que querais, si estais en / por ejemplo, etc).

Salu2!
ls > listado |grep directorio
xilixi escribió:ls > listado |grep directorio


Tampoco xD Eso no hace nada, bueno, solo redirige la salida de ls al archivo listado.(compruebalo tu mismo). Aunque tampoco vas muy desencaminado :P Le falta alguna cosilla en medio :D

¿nadie mas se anima a participar? :P

Salu2!
ls / > nombre && cat nombre | grep etc

Salu2!!
pery_soy escribió:ls / > nombre && cat nombre | grep etc

Salu2!!


Premio para el caballero!!! No era lo que yo habia pensado exactamente pero tambien lo hace, para ti el siguiente :D

Salu2!

PD: yo lo habia pensado como:

$ ls | tee listado | grep directorio

;)
Gracias :)

Bueno, ahora os propongo yo otro facilillo: sacar pon pantalla la palabra que vosotros querais si en en el archivo del listado anterior aparece el directorio etc.

Salu2!!

PD: Actualizo por si no lo he explicado bien, sacar por pantalla el listado y en vez de que aparezca etc (si existe la palabra) que aparezca por ejemplo ETC.

PD2: No conocia tee, habra que echarle un vistazo ;)

Salu2!!
sed -n -e '/^etc$/{y/abcdefghijklmnñopqrstuvwxyz/ABCDEFGHIJKLMNÑOPQRSTUVWXYZ/;p}' fichero


o

( grep '^etc$' | tr 'a-z' 'A-Z' ) < fichero


o

grep '^etc$' fichero | tr 'a-z' 'A-Z'


Pero como siempre el caballo ganador es sed sin mariconadas !

sed -n -e '/^etc$/s--\U&\E-p' fich


Por cierto que el resto de 'grep's que han salido antes (refiriendome al resto de mensajes del hilo, no a los que yo he escrito) son incorrectos ya que también creerán que Midirectorio cumple con lo que se pide, cuando no lo hace.

- ferdy
Yo pensé algo como esto:

$ cat listado | sed -e "s/etc/ETC/"

pero asi me he dado cuenta ahora que estaba imcompleto ya que cambia cualquier palabra que contenga 'etc', viendo las respuesta de ferdy ya lo he resuelto

ferdy es tu turno X-D

Salu2!!
Además tu solución 'abusa' de cat ya que es completamente innecesario.

Mi turno mmmmmmmmmmm .... Buscar todos los ficheros que:

a) Sean 'hijos' del directorio actual.
b) Contengan el directorio actual dentro de sus 'datos'/'contenido'.

Además, se supone que la jerarquía que cuelga del directorio actual, tiene menos de 3000 nodos.

Dar una lista ordenada de dichos ficheros.

¡ Solo vale el más eficiente !

- ferdy
Ferdy escribió:
sed -n -e '/^etc$/{y/abcdefghijklmnñopqrstuvwxyz/ABCDEFGHIJKLMNÑOPQRSTUVWXYZ/;p}' fichero


o

( grep '^etc$' | tr 'a-z' 'A-Z' ) < fichero


o

grep '^etc$' fichero | tr 'a-z' 'A-Z'


Pero como siempre el caballo ganador es sed sin mariconadas !

sed -n -e '/^etc$/s--\U&\E-p' fich


Por cierto que el resto de 'grep's que han salido antes (refiriendome al resto de mensajes del hilo, no a los que yo he escrito) son incorrectos ya que también creerán que Midirectorio cumple con lo que se pide, cuando no lo hace.

- ferdy



Lo que yo pensaba cuando ví el post... pasará como el hilo de fotos de gente del S.L, que ganará siempre Ferdy xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Propongo echarlo [carcajad] [carcajad] [carcajad]

Felices Navidades :Ð

Pd:

Bueno, edito que tito Ferdy puso a la vez su pregunta...

A ver si vale estop (no lo entendí del todo bien)

grep -l -e `pwd` `(ls -l | grep -v "^d" | grep ^- | cut -d ":" -f 2 | cut -d " " -f 2 )` | sort

Pd2: No pienso a ponerme a buscar la simplificacion de los archivos XD del segundo `` XD
Ferdy escribió:Mi turno mmmmmmmmmmm .... Buscar todos los ficheros que:

a) Sean 'hijos' del directorio actual.
b) Contengan el directorio actual dentro de sus 'datos'/'contenido'.

Además, se supone que la jerarquía que cuelga del directorio actual, tiene menos de 3000 nodos.

Dar una lista ordenada de dichos ficheros.

¡ Solo vale el más eficiente !

- ferdy


Diosss!! Eso es salvajismo [tomaaa] Me estrujare los sesos a ver que sale :P

Salu2!
Pd2: No pienso a ponerme a buscar la simplificacion de los archivos smile_XD del segundo `` smile_XD


Noooooooooooooooooo cookies !

Eso es salvajismo


No creas, es simple.

- ferdy
Supongo que estara mal pero.....

ls -R | grep | pwd

Salu2!

PD: me falta lo de los nodos pero no tengo ni warra de lo que es xD (solo me suena de algo de listas enlazadas). Voy a googlear un poco.
Supongo que sería algo parecido a esto:

find . -type f -exec grep -e $PWD -l {} \;

- Lo de la eficiencia imagino que está resuelto por el comportamiento de -l.
- Lo de los 3000 nodos no sé a qué se refiere.

Saludos
A NeoRave solo le falta ordenarlo. Pero aún así es poco eficiente...

- ferdy
Ok, mis conocimientos no van mucho más allá de eso, así que supongo que no caeré en la forma eficiente.

Para lo del sort y sobrevivir al ejercicio (aunque de forma ineficente), supongo que con "empipárselo" al sort valdría. Y respecto a lo de los 3000 nodos, ¿podrías comentar el porqué de la restricción?

PD: a ver si aparece otro fenómeno del tema y no se nos aburre Ferdy :)
Veamos:

1) Para ordenarlos no hay más huevos que darselos al sort... a no ser que grep sea capaz de ordenar, que lo ignoro.
2) Tu línea ejecuta un fork+pipe+exec por cada fichero que encuentra, esto es ineficiente. Especialmente porque se puede hacer todo con un solo fork+pipe+exec para todos los nodos.
3) 3000 es un número _claramente_ menor que el número máximo de argumentos. Para hacer las cosas más fáciles vaya.

- ferdy
Ferdy escribió:
Noooooooooooooooooo cookies !



No creas, es simple.

- ferdy



[qmparto] [qmparto] Es la primera vez ke me llaman monstruo de las galletas [qmparto] [qmparto] [qmparto]
find . -type f -printf "\"%p\" " | xargs grep -l $PWD

¿?

Por Dios, que debería estar estudiando, no me hagáis esto xD

Por cierto, gracias por las pistas/explicaciones, Ferdy.
Jaja... vas llegando vas llegando... sigue sin salir ordenada y ... qué ocurre si el directorio actual tiene espacios ?!

- ferdy
find . -type f -printf "\"%p\" " | xargs grep -l "$PWD" | sort


Lo que pasa con el orden es que no me fijé la primera vez y parece ser que mi cerebro me impide acordarme de ello como castigo :-P


Saludos
Realmente te sobra el -printf y deberías añadir -print0 en find y -0 en xargs para asegurarte de que no hay problemas con los nombres de los ficheros. Por lo demás... parece que tenemos ganador :P

Tu turno.

- ferdy
Conexión ssh a un servidor remoto, arrancando una aplicación que necesite las X (por ejemplo xterm):

- Permitirá introducir el password interactivamente.
- Una vez hecho esto, ssh quedará ejecutándose en segundo plano, mientras nos divertimos juanqueando el servidor [carcajad]
- Nuestro terminal seguirá trabajando en local (es decir, no logueado en el servidor remoto).


Por supuesto todo con una simple ejecución de ssh, !!venga señora que se lo estoy regalando!!

Es muy facilito, pero tengo poca imaginación (espero haberme explicado) :)


Saludos

Edito: Supongo que -print0 y -0 es para que usen de delimitador el carácter nulo, no? Algo había leído en el man, pero no le había prestado demasiada atención. Apunte interesante. :D
24 respuestas