#1 Le 05/10/2008, à 22:36
- visor_2008
Script de reconnaissance du type de fichier
Bonjour tout le monde,
J'ai un petit soucis avec un répertoire contenant plusieurs fichiers et sous-dossiers. Ces fichiers sont des pdf, doc et ppt mais sans extension. J'aimerais donc savoir si quelqu'un saurais comment faire un script pour qu'il reconnaisse le type de fichier et y ajoute la bonne extension!
Merci
#2 Le 05/10/2008, à 22:55
- xamaco
Re : Script de reconnaissance du type de fichier
Essaie:
file monfichier
Voir 'man file'
Xavier
Hors ligne
#3 Le 08/10/2008, à 21:09
- visor_2008
Re : Script de reconnaissance du type de fichier
Merci,
Quelqu'un aurait un exemple avec une boucle?
#4 Le 08/10/2008, à 21:57
- Link31
Re : Script de reconnaissance du type de fichier
Sans boucle :
find . -type f -exec file {} \;
Il n'y a pas besoin de boucle, il te suffit de lancer un script à la place de "file" qui s'occupera de renommer comme il faut le fichier passé en argument.
Dernière modification par Link31 (Le 08/10/2008, à 21:59)
Hors ligne
#5 Le 09/10/2008, à 19:52
- visor_2008
Re : Script de reconnaissance du type de fichier
Oui mais vu que j'ai des pdf, ppt et doc dans plusieurs sous-dossiers pour lui dire de renommer ce fichier en pdf celui-ci en doc il faut bien une boucle?
#6 Le 10/10/2008, à 19:17
- Orion Elenion
Re : Script de reconnaissance du type de fichier
AVERTISSEMENT : Le code qui suit n'est pas parfait car "file" ne fait pas de différence entre les différents formats MS Office. Avec ce code, tous les fichiers MS Office seront renommés en .doc (document Word), ce qui devrait suffire pour les faire ouvrir par MS Office. J'ignore cependant s'il saura les ouvrir correctement. En tous cas, cela ne permettra pas de faire la différence par un simple coup d'oeil, il faudra nécessairement ouvrir les fichiers MS Office pour pouvoir les différencier.
find . -type f | while read fichier ; do
case $( file -ib "${fichier}" ) in
# Cas d'un fichier PDF :
'application/pdf')
mv "${fichier}" "${fichier}.pdf"
;;
# Cas d'un fichier MS Office :
'\012- application/msword')
mv "${fichier}" "${fichier}.doc"
;;
# Tu peux à loisir rajouter des types en suivant ce modèle et en regardant ce que file -i donne sur un fichier...
# Dans tous les autres cas :
*)
echo "Type de fichier non reconnu pour ${fichier}." >&2
esac
done
En revanche, sais-tu que Linux ne se base pas sur les extensions de fichiers pour déterminer leur type ? Tu peux sans problème utiliser tes fichiers sous Linux en l'état...
Dernière modification par Orion Elenion (Le 10/10/2008, à 19:17)
Ubuntu is an ancient african word meaning : "I can't configure Debian".
Hors ligne
#7 Le 10/10/2008, à 22:34
- Link31
Re : Script de reconnaissance du type de fichier
C'est exactement ce que j'avais en tête dans mon dernier post (sans la boucle cependant), sauf que je n'avais pas le temps d'écrire le script. J'aurais fait quelque chose de plus compliqué qui aurait évité d'accumuler les extensions, mais ta version est très bien.
Dernière modification par Link31 (Le 10/10/2008, à 22:35)
Hors ligne
#8 Le 11/10/2008, à 22:39
- visor_2008
Re : Script de reconnaissance du type de fichier
Merci Orion Elenion !