1 2 3 4 5 6 7 |
#!/bin/bash ARCHIVO=$1 file -b "$1" | grep -i 'JPEG' || file -b "$1" | grep -i 'GIF' || file -b "$1" | grep -i 'PNG' || file -b "$1" | grep -i 'BITMAP' >/dev/null 2>&1 if [ $? -eq 0 ]; then echo "Es una imagen" else "No es una imágen" fi |
En este guión hemos supuesto que un archivo cualquiera se convierte en la variable $1 y queremos averiguar si el archivo es una imágen en alguno de los formatos mas comunes, primero acudimos a file para que «lea» el texto que contiene el archivo y lo entubamos a grep que buscará patrones de texto de lo que le entrega file. Como necesitamos averiguar si alguno de los patrones JPEG, GIF, PNG o BITMAP aparece dentro del archivo utilizamos varias instancias de file y grep separadas con OR (||), de esta forma le estamos diciendo en el comando «busca si aparece JPEG o GIF o PNG o BITMAP, si lo encuentras entonces imprime».
«Es una imagen» de cualquier otra forma imprime «No es una imagen»