12 votos

¿Hay alguna manera de saber qué archivos que he renombrado accidentalmente a *.jpg no son realmente imágenes JPEG?

Tengo una carpeta con muchos miles de archivos, que por un error tenían sus extensiones mal nombradas, todos los archivos tienen ahora el .jpg extensión.

En todos los .jpg me gustaría encontrar los archivos que no son de imagen.

¿Existe una forma de línea de comandos para identificar qué archivos son una imagen real y cuáles no?

He pensado en buscar archivos sin vista previa, pero no encuentro la forma de buscar archivos sin vista previa.

Aquí hay un archivo de ejemplo que tiene un .jpg extensión, pero no es una imagen real:

enter image description here

41voto

Puede utilizar file FILENAME para determinar el tipo de datos de un archivo.

$ file image.jpg text.jpg pdf.jpg
image.jpg: JPEG image data
text.jpg:  ASCII text
pdf.jpg:   PDF document, version 1.4

Así que, file *.jpg | grep -v JPEG debería dar una lista de todos los archivos no JPEG con la extensión ".jpg".

Además, suponiendo que haya PDFs puedes renombrarlos de una sola vez

find . -type f \
    -exec sh -c 'file "$1" | grep -q PDF' _ {} \;  \
    -exec sh -c 'echo mv -- "$1" "${1%%jpg}pdf"' _ {} \;

Retire el echo en la segunda línea una vez que haya verificado que la salida se ve bien.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X