Ajouter extension

Nuche

Membre enregistré
3 Octobre 2016
5
0
45
Bonjour à tous...

J'ai un gros problème avec tous un tas de fichiers créés sur Mac depuis de nombreuse années et de tous format (pdf, word, excel, powerpoint, etc...).
Des milliers de fichiers :(

La plupart des ces fichiers n'ont pas d'extension, ce qui n'est pas un gros problème sur Mac, mais l'est sur Windows/Linux

Et comme ces fichiers doivent maintenant pouvoir être ouvert sur Mac et Windows, les fichiers sans extension ne s'ouvrent pas !

Existe-t-il une solution pour ajouter les extensions automatiquement (avec automator par ex.) en fonction du type de fichiers détecté par OSX ?
(Je dis bien automatiquement car il y a des milliers de fichiers répartis dans de nombreux nombreux dossiers)

PS: Cela peut être une solution qui tourne aussi-bien sur OSX/Windows/Linux

Merci !

Philippe
 
Et comme ces fichiers doivent maintenant pouvoir être ouvert sur Mac et Windows, les fichiers sans extension ne s'ouvrent pas !
Oui et non, la présence d'une extension n'est pas obligatoire pour une ouverture.

Qu'il y est une extension ou pas n'est pas le problème. Dans les deux systèmes, il faut déclarer explicitement en faisant cmd+I sur OS X quel est le logiciel qui ouvrira tout le temps ce type de fichier et c'est la même chose sous Windows lorsqu'on fait un clic droit, il suffit d'indiquer quel est le programme qui ouvrira ce fichier.
 
Oui et non, la présence d'une extension n'est pas obligatoire pour une ouverture.

Qu'il y est une extension ou pas n'est pas le problème. Dans les deux systèmes, il faut déclarer explicitement en faisant cmd+I sur OS X quel est le logiciel qui ouvrira tout le temps ce type de fichier et c'est la même chose sous Windows lorsqu'on fait un clic droit, il suffit d'indiquer quel est le programme qui ouvrira ce fichier.

Oui et Non :)
Un utilisateur lamba ne va pas comprendre, donc il faut oublier cette méthode :(
(Déjà que lorsque l'on voit des utilisateurs ajouter un "x" au doc pour le convertir en docx, on est pas sorti de l'auberge...)
En plus de cela, le problème et bien plus complexe que ca. Je n'ai pas tout dis :angelic:

Les fichiers vont être transférés sur Sharepoint (pas taper, ce n'est pas mon choix), et donc les fichiers inconnus ne pourront pas être reconnu directement dans Sharepoint sans extension. Un document Word ne pourra pas être édité dans Sharepoint si il n'a pas d'extension, et c'est un peu le but de Sharepoint.
 
Bonjour,
Oui et Non :)
Un utilisateur lambda ne va pas comprendre, donc il faut oublier cette méthode :(
(Déjà que lorsque l'on voit des utilisateurs ajouter un "x" au doc pour le convertir en docx, on est pas sorti de l'auberge...)
je confirme… galère assurée.
En plus de cela, le problème et bien plus complexe que ca. Je n'ai pas tout dis :angelic:

Les fichiers vont être transférés sur Sharepoint (pas taper, ce n'est pas mon choix), et donc les fichiers inconnus ne pourront pas être reconnu directement dans Sharepoint sans extension. Un document Word ne pourra pas être édité dans Sharepoint si il n'a pas d'extension, et c'est un peu le but de Sharepoint.
Une idée toute théorique, je n'ai jamais eu à le faire concrètement.
Un fichier a souvent dans sa première ligne une signature caractéristique, qu'on peut voir en l'ouvrant avec un éditeur.
Exemple pour les PDF : %PDF-1.4 (le 1.4 change selon la version de PDF).
Pour les .doc et .xls par contre, il faut chercher la signature vers la fin du document.
Exemples
- pour un .doc de 2003 : Word.Document.8
- pour un .xls de 2004 : Microsoft Excel
Parfois, on trouve un mimetype dans l'en-tête du fichier.
Pour ceux qui savent programmer ça, il faudrait établir une table de correspondance signature/extension et l'ajouter en fonction d'une boucle de test. Ce n'est hélas pas mon cas.
 
Si MacOS X reconnait le type de fichiers, on peut trier par type dans le dossier contenant les fichiers, puis on sélectionne, par exemple, tous les fichiers Microsoft Word et on les déplace dans un dossier nommé (toujours un exemple) Word.

Ensuite via le Terminal
cd
puis passer un espace et glisser le dossier "Word" précédemment créé et contenant les fichiers pour en recopier le chemin d'accès, suivi d'Entrée
Enfin taper la commande

for i in *; do mv "$i" "$i.doc"; done

Ca va ajouter l'extension .doc à tous les fichiers ayant été placés dans le dossier "Word"

Recommencer ainsi pour chaque type de fichiers.
 
  • J’aime
Réactions: luc1en
Finder > Préférences > Options avancées : Afficher toutes les extensions de fichier. :angelic:
Ouch... c'est vrai qu'on n'a même pas penser à vérifier ca pour commencer! :banghead:
 
  • J’aime
Réactions: baron
Ouch... c'est vrai qu'on n'a même pas penser à vérifier ca pour commencer! :banghead:

Oui, il faut commencer par le début ;)
Mais non, ca n'est pas ca

Beaucoup fichiers n'ont pas d'extension. Vous n'imaginez même pas combien :(

luc1en: J'avais songé à cette solution. Je n'ai pas encore approfondi le sujet mais il me semble être tombé sur des fichiers dont ils étaient impossible de les identifier via sa première ligne. Mais je dois encore étudier la question.

r e m y: Si seulement c'était possible, mais t'imagine même pas le nombre de dossiers et de sous-sous-sous-dossiers qu'il y a. C'est juste impossible.

Bien sur si il n'y a pas de solution, on devra migrer les données à la main :dead:
Il y a plus de 500Go de données :banghead:

Je me disais que comme macOS reconnait le type de fichiers (la plupart du temps), il y avait moyen de faire un truc automatique.
Je suis peut-être un peu idéaliste et rêveur ;)
 
Je suis convaincu qu'il y a moyen d'automatiser via un AppleScript ou Automator en se basant sur le type de fichier identifié par MacOS X.
Mais je ne suis pas assez calé pour le proposer.

(Je pensais que les fichiers allaient être migrés manuellement sur SharePoint pour les repartir dans une nouvelle arborescence de dossiers... )
 
Je suis convaincu qu'il y a moyen d'automatiser via un AppleScript ou Automator en se basant sur le type de fichier identifié par MacOS X.
Mais je ne suis pas assez calé pour le proposer.

(Je pensais que les fichiers allaient être migrés manuellement sur SharePoint pour les repartir dans une nouvelle arborescence de dossiers... )

J'en suis convaincu aussi mais je suis une bille en programmation :sorry:

Ils vont être migré automatiquement via les utilitaires SharePoint (Que je ne connais pas).
SharePoint copie l'arborescence (qui a été créé avant ce qui n'a pas été une grande idée selon moi, mais c'est toujours plus facile de le dire après) ainsi que les fichiers et index le toute de manière automatique mais selon des critères assez strictes.
On aura la possibilité de chercher les fichiers toujours en fonction de l'arborescence actuelle mais aussi via les Tags et le contenu du document.

:merci:
 
Salut

Une piste :
la commande :
file --mime-type *
devrait donner l'extension des fichiers concernées.
Après faut bosser avec un outil style Find et en fonction du type d'extension, renommer les fichiers.
 
  • J’aime
Réactions: luc1en
Bonjour,
Salut

Une piste :
la commande :
file --mime-type *
devrait donner l'extension des fichiers concernées.
Après faut bosser avec un outil style Find et en fonction du type d'extension, renommer les fichiers.

C'est intéressant, merci.
Voici le résultat de la commande
Bloc de code:
file -I 2015-12-21reuniondebureau* >mime2.txt
Bloc de code:
2015-12-21reuniondebureau:    application/vnd.oasis.opendocument.text; charset=binary
2015-12-21reuniondebureaupdf: application/pdf; charset=binary
Par contre, si on balaye tous les fichiers d'un gros dossier (543 fichiers), le temps d'exécution semble grimper en flèche.
 
Salut

Une piste :
la commande :
file --mime-type *
devrait donner l'extension des fichiers concernées.
Après faut bosser avec un outil style Find et en fonction du type d'extension, renommer les fichiers.

Alors là c'est super intéressant !
Cela a l'air de fonctionner pour les documents Office et les images mais il y a confusion d'extension avec certains types de fichiers:
.pdf et .ai (illustrator): application/pdf
.pages, .zip, .key: application/zip
.rtfd: inode/director
.fmp12 (Filemaker): application/x-font-ttf

Pour le moment c'est juste un test basique et rapide que j'ai effectué.

Merci a tous de votre aide, c'est vraiment super sympa :coucou:
Déjà avec celle-là cela permet de faire un sacré gros tri des documents Office :)
 
Bonjour

J'ai un peu le même problème avec des centaines de fichiers renommés et sans extension, il y a un peu de tout mais principalement des PDF, des JPG et des PNG.
Je cherche un outil capable de détecter le type du fichier et lui affecter une extension.

Si depuis 2016 quelqu'un a trouvé une solution je serais heureux de la connaitre.
Merci.
 
Bonjour,

Tu peux essayer ce script.
Il te demande de choisir le dossier contenant les fichiers à traiter, puis il traite tous les fichiers du dossier et des sous dossiers...

Bloc de code:
tell application "Finder"
    set Chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers sans extension"
    my inspecter(Chemin)
end tell

on inspecter(un_dossier)
    tell application "Finder"
        -- traitement des fichiers :
        set les_fichiers to files of un_dossier
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
            set lefichier to chaque_fichier
            set AppleScript's text item delimiters to {""}
            set nom to name of chaque_fichier --récupère le nom du fichier
            set extens to document file nom in un_dossier --recupere l extension du fichier
            set lextension to name extension of extens
            if lextension is not "" then
            else
                set nomcourt to nom
            end if
            set chaque_fichier to chaque_fichier as string
            
            if lextension is "" then
                set genre to do shell script "file --mime " & quoted form of POSIX path of chaque_fichier
                set sauv to AppleScript's text item delimiters
                set AppleScript's text item delimiters to {";"}
                set legenre to text item -2 of genre
                set AppleScript's text item delimiters to {"/"}
                set lextens to last text item of legenre
                set AppleScript's text item delimiters to sauv
                
                set newnom to nom & "." & lextens
                
                set name of lefichier to newnom
            end if
        end repeat
        
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
    
end inspecter
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Je précise que le script ne touche pas à la propriété : extension masquée ou affichée.

Si tu veux qu'elle soit affichée il faut ajouter la ligne : set extension hidden of lefichier to false

ce qui donne le script ci dessous, Mais bien sur il ne traite que les fichiers trouvés sans extension.

Bloc de code:
tell application "Finder"
    set Chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers sans extension"
    my inspecter(Chemin)
end tell

on inspecter(un_dossier)
    tell application "Finder"
        -- traitement des fichiers :
        set les_fichiers to files of un_dossier
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
            set lefichier to chaque_fichier
            set AppleScript's text item delimiters to {""}
            set nom to name of chaque_fichier --récupère le nom du fichier
            set extens to document file nom in un_dossier --recupere l extension du fichier
            set lextension to name extension of extens
            if lextension is not "" then
            else
                set nomcourt to nom
            end if
            set chaque_fichier to chaque_fichier as string
           
            if lextension is "" then
                set genre to do shell script "file --mime " & quoted form of POSIX path of chaque_fichier
                set sauv to AppleScript's text item delimiters
                set AppleScript's text item delimiters to {";"}
                set legenre to text item -2 of genre
                set AppleScript's text item delimiters to {"/"}
                set lextens to last text item of legenre
                set AppleScript's text item delimiters to sauv
               
                set newnom to nom & "." & lextens
               
                set name of lefichier to newnom
                set extension hidden of lefichier to false
            end if
        end repeat
       
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
   
end inspecter
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Bonsoir,
Après quelques tests plus poussés, il s'avère que cela ne fonctionne pas sur les fichiers docx et xlsx.
J'ai donc modifié le script pour prendre en compte ces 2 types de fichiers.

Fais quelques tests et dis-moi si tu rencontres d'autres fichiers provoquant des erreurs.

Bloc de code:
tell application "Finder"
    set Chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers sans extension"
    my inspecter(Chemin)
end tell

on inspecter(un_dossier)
    tell application "Finder"
        -- traitement des fichiers :
        set les_fichiers to files of un_dossier
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
            set lefichier to chaque_fichier
            set AppleScript's text item delimiters to {""}
            set nom to name of chaque_fichier --récupère le nom du fichier
            set extens to document file nom in un_dossier --recupere l extension du fichier
            set lextension to name extension of extens
            if lextension is not "" then
            else
                set nomcourt to nom
            end if
            set chaque_fichier to chaque_fichier as string
          
            if lextension is "" then
                set genre to do shell script "file --mime " & quoted form of POSIX path of chaque_fichier
              
                set sauv to AppleScript's text item delimiters
                set AppleScript's text item delimiters to {";"}
                set legenre to text item -2 of genre
                set AppleScript's text item delimiters to {"/"}
                set lextens to last text item of legenre
              
                set AppleScript's text item delimiters to sauv
              
                set nb to count characters of lextens
                if nb > 4 then
                    set AppleScript's text item delimiters to {"."}
                    set dernier to last text item of lextens
                    if dernier = "document" then set lextens to "docx"
                    if dernier = "sheet" then set lextens to "xlsx"
                end if
                
                set lenewfichier to lefichier as string
                set newnom to nom & "." & lextens
                set name of lefichier to newnom
                set lenewfichier to lenewfichier & "." & lextens as alias
                set extension hidden of lenewfichier to false
              
            end if
        end repeat
      
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
  
end inspecter
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Dernière édition:
Ok ! Bon Week end

Attention les fichiers "Pages" et "Numbers" seront vu comme des fichiers "zip" et c'est zip qui leur sera ajouté comme extension.
Je n'ai pas trouvé de solution pour ces fichiers, car même avec un éditeur binaire style HexEdit on ne trouve pas les termes "pages" ou "numbers" dans le fichier...