[LUG.ro] Dónde están los videos temporales flash [solución]

Martin A. Troncoso tincho.tgz en gmail.com
Mie Oct 12 01:05:31 ART 2011


On Tuesday 11 October 2011 10:59:31 Ricardo Armas wrote:
> 2011/10/10 Ricardo Armas <rarmas en gmail.com>:
> > 2011/10/8 Martín Carr <tincarr en gmail.com>:
> > Yo le agregué la opción -X al lsof para que no liste los archivos
> > TCP&UDP, anda más rápido, queda:
> > #!/bin/bash
> > mplayer  $(for i in $(lsof -X | grep -i Flash | grep -v '.so' |awk
> > '{printf "%s--%s\n", $2, $4}'); do { echo "/proc/"$(echo $i | awk -F
> > -- '{print $1}')"/fd/"$(echo $i | awk -F -- '{print $2}'|sed s/u//g);
> > }; done )
> 
> Otra, le agregué que sólo busque los Flash que están en la carpeta
> tmp, ahora anda perfecto
> grep -i tmp/Flash
no entiendo algo, porque armar un for y complicarlo tanto?

lsof -X | grep -i flash <-- obtenemos la lista de flash player

redirigimos a un grep para ver los archivos temporales

grep tmp <-- obtenemos solo los que van en tmp 

imprimimos entonces "/proc/columna del proceso/fd/id archivo"

awk '{print "/proc/"$2"/fd/"$4}' <--- imprime lo antes mencionado

en el lsof el id archivo finaliza con una "u" que no sirve, la eliminamos

cut -d u -f 1 <-- corta el campo antes de la "u", como los valores anteriores 
no tienen "u" viene bien, tambien podria ser un "sed s/u//" (el g no es 
necesario porque no vamos a tener mas de una concurrencia por linea) para 
remplazar por la nada o un "tr -d u" (para eliminar el caracter "u")

entonces:

lsof -X | grep -i flash | grep tmp | awk '{print "/proc/"$2"/fd/"$4}' | tr -d u 
<--- nos va a devolver una lista de archivos que son los que nos interesan, 
mplayer soporta listas de esta forma

mplayer `lsof -X | grep -i flash | grep tmp | awk '{print "/proc/"$2"/fd/"$4}' 
| tr -d u`

y listo, para que usar tantos AWK, bucles FOR y demas? o.0



Más información sobre la lista de distribución Lugro