Ci sono alcuni problemi con il tuo script.
Innanzitutto, stai inviando l'output finale da head a /dev/null , quindi non vedrai nulla di simile.
In secondo luogo, non stai effettivamente aprendo i file, stai solo passando l'elenco di file trovato da find in head , quindi anche se rimuovi il > /dev/null tu vedremo solo il nome del primo file. Se head viene letto da stdin, considera stdin come 'file', non come un elenco di file da elaborare.
Invece, vorrai fare qualcosa di più simile a questo:
#!/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
Nota anche che se hai usato la shell zsh , potresti ottenere ciò in modo più semplice:
head -n 1 $DIR/**/*.m
La shell zsh (e alcuni altri) consente il globbing dei file ricorsivi, per consentire di passare tutti i file .m (in modo ricorsivo) a head come argomenti della riga di comando in un colpo solo.