Hay algunos problemas con tu script.
En primer lugar, está enviando la salida final de head
a /dev/null
así que no verás nada de la cabeza en absoluto.
En segundo lugar, no estás abriendo realmente los archivos, sólo estás pasando el lista de archivos encontrado por find
en head
Así pues, aunque se elimine el > /dev/null
sólo verás el nombre del primer archivo. Si head
lee desde stdin, trata a stdin como el 'archivo', no como una lista de archivos a procesar.
En cambio, querrás hacer algo más parecido a esto:
#!/bin/sh
DIR="$HOME/SpaceMonkey/MATLAB/Luo-Rudy"
while true
do
for filename in $(find $DIR -name '*.m')
do
head -n 1 $filename
# or if you want the filename listed too:
#echo "$filename $(head -n 1 $filename)"
done
sleep 300
done
Tenga en cuenta también que si utilizó el zsh
shell, podría conseguirlo de forma más sencilla:
head -n 1 $DIR/**/*.m
El zsh
shell (y algunos otros) permite el globbing recursivo de archivos, para permitirle pasar todos los .m
(recursivamente) a head
como argumentos de la línea de comandos de una sola vez.