Hay algunos problemas con tu script.
Primero, estás enviando la salida final de head
a /dev/null
, por lo que no verás nada desde la cabeza.
Segundo, no estás abriendo los archivos, solo estás pasando la lista de archivos encontrada por find
a head
, así que incluso si eliminas el > /dev/null
Sólo veré el nombre del primer archivo. Si head
lee desde stdin, trata a stdin como el 'archivo', no como una lista de archivos para procesar.
En cambio, querrás hacer algo más como 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 usó el shell zsh
, podría lograrlo de manera más simple:
head -n 1 $DIR/**/*.m
El shell zsh
(y algunos otros) permite el intercambio de archivos recursivos, para permitirle pasar todos los archivos% co_de (recursivamente) a .m
como argumentos de línea de comandos de una sola vez.