Bonjour.
Tu ne saisis pas la notion de pipe : le résultat de grep (qui d'ailleurs ici n'aboutit à rien car aucun fichier n'est passé en paramètre) est transmis à head dans un sous shell et il ne sait pas quoi en faire 
Il faudrait au contraire piper la sortie de head à ton grep car c'est lui qui doit parser le résultat de ce dernier (autrement dit parser les 30 premières lignes).
Bon je pense qu'il y a sûrement plus simple
:
for i in *; do if [ -f "$i" ]; then head "$i" -n 30 | grep "MyPrint"; fi; done
Cordialement,
Idriss
Partager