12 votes

Existe-t-il un moyen de savoir quels fichiers que j'ai accidentellement renommés en *.jpg ne sont pas réellement des images JPEG ?

J'ai un dossier contenant plusieurs milliers de fichiers, dont les extensions ont été mal nommées à cause d'une erreur, tous les fichiers ont maintenant l'extension suivante .jpg extension.

Dans tous les .jpg Je voudrais trouver les fichiers non-image.

Existe-t-il un moyen en ligne de commande pour identifier les fichiers qui sont des images réelles et ceux qui ne le sont pas ?

J'ai pensé à rechercher des fichiers sans aperçu, mais je ne trouve pas de moyen de rechercher des fichiers sans aperçu.

Voici un exemple de fichier contenant un fichier de type .jpg mais n'est pas une image réelle :

enter image description here

41voto

nohillside Points 82672

Vous pouvez utiliser file FILENAME pour déterminer le type de données dans un fichier.

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

Donc, file *.jpg | grep -v JPEG devrait donner une liste de tous les fichiers non-JPEG avec l'extension ".jpg".

En outre, en supposant qu'il s'agisse de PDF, vous pouvez les renommer en une seule fois.

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

Retirer le echo dans la deuxième ligne une fois que vous avez vérifié que la sortie est correcte.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X