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.