Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 !