# Scripts MAC (bash ?)



## nicolasec (18 Octobre 2009)

Je ne suis peut-être pas tout à fait dans la bonne section, auquel cas je m'en excuse. 

Après avoir eu un problème sur mon MAC, j'ai du lancer un utilitaire de récupération de disque pour récupérer toutes mes photos perdues. Il m'a l'air d'avoir pas mal réussi et à créé près de 2500 dossiers avec 500 fichiers dans chacun qui contiennent tout et n'importe quoi (surtout n'importe quoi !). 

Des centaines de milliers de fichiers texte, etc. qui correspondent à tous les fichiers qu'il pouvait y avoir sur le MAC. 


Y a-t-il moyen d'écrire un script qui parcourt tous les dossiers et déplace tous les .jpg .mov vers un autre dossier ? 
Cela m'éviterait un travail long et très fastidieux : de parcourir tous les dossiers à la main !!! 

Merci d'avance.


----------



## grumff (18 Octobre 2009)

Oui c'est possible, mais t'as essayé de faire ça simplement avec automator ? ça doit rentrer dans ses possibilités


----------



## Elesthor (18 Octobre 2009)

Bwa automator c'est lourd pour faire si simple ^^ Un pti coup de bash et ça roule 


```
find /Users/Name/Desktop/DossierRecup -name "*.png" -exec mv {} /Users/Name/Desktop/Imgs/ \;
```

Voilà voilà^^


----------



## nicolasec (18 Octobre 2009)

Merci pour la commande !! C'est exactement ce que je cherchais 

Je remarque du coup que j'ai un problème de droit sur les fichiers (que je n'arrive pas à résoudre en faisant un chmod -R 777), ni en faisant "su + ta commande". 

Je ne sais pas vraiment pourquoi mais du coup en faisant un cp : 
find /Users/path1 -name "*.png" -exec cp {} /Users/path2/ \;
je contourne le problème. 

Merci encore, tu me sauves de bien des heures de tâche rébarbative


----------



## Elesthor (18 Octobre 2009)

Ca te les copies avec tes droits d'accés perso (en gros sa recréer les fichiers à ton nom) donc c'est tout bon =)

De rien pour la commande , n'hésite pas à demander, des ptites commandes unix ça peuvent sauver des vies(et c'est un euphémisme =P) =)


```
Merci encore, tu me sauves de bien des heures de tâche rébarbative
```

Hum à 2500 dossiers de 504 fichiers : à 2 sec par groupe de fenêtre de 16 fichiers ça nous fait 42 sec d'analyse sans compter le temps de scroller soit environ 1 min par dossier. En comptant 2 sec pour ouvrir un nouveau dossier : 2k5*62 = 155000 min  soit environ 2584 heures. Ce qui nous donne en temps pleins (24/24) :107 jours . Soit en y passant 5 heures par jours: 517 jours

Tu viens d'économiser plusieurs années de boulot xD


----------



## nicolasec (18 Octobre 2009)

En fait je passais plutôt 10 secondes en moyenne par dossier :
 - ouvrir le dossier ;
 - cliquer pour classer par taille ;
 - la plupart du temps, pas grand chose dedans, donc : revenir au dossier de répertoires.

Donc, tout de même 2500*10 = 25000sec. Soit 6 à 7h de travail à la chaîne, sans compter le temps de mise à la poubelle + vider la poubelle. 

Une bonne dizaine d'heures  



ps: tu t'es trompé dans ton 2500*62, les 62 sont des secondes, pas des minutes


----------



## Elesthor (19 Octobre 2009)

Exact , pas fait attention aux unitées ^^
6/7heures c'est déjà ça de gagné^^


----------



## Arlequin (19 Octobre 2009)

Pourquoi ne pas utiliser tout simplement la recherche par critère du finder


----------



## Elesthor (19 Octobre 2009)

> Pourquoi ne pas utiliser tout simplement la recherche par critère du finder


Une commande est encore plus rapide =)


----------



## Arlequin (19 Octobre 2009)

Elesthor a dit:


> Une commande est encore plus rapide =)



oui
à condition de

1) aimer les lignes de codes
2) ne pas se planter
3) refaire ça pour chaque type de fichiers recherchés

enfin ce n'est que mon avis


----------



## [Vezøul]Numerø41 (19 Octobre 2009)

Arlequin a dit:


> 1) aimer les lignes de codes


Qui n'aime pas ?    



Arlequin a dit:


> 2) ne pas se planter


Tout le monde n'est pas développeur chez Apple responsable de la sauvegarde des données après ouverture du compte invité    



Arlequin a dit:


> 3) refaire ça pour chaque type de fichiers recherchés


Ca aussi ça s'automatise vite et bien en ligne de commande.


----------



## tatouille (22 Octobre 2009)

nico-a-sec, si tu as un probleme de droit, ne fait pas la connerie que tu as deja faite chmod -R 777

1 - il y a certainement des fichiers avec des locks voir /Developer/Tools/SetFile
j'ai deja posé plusieurs exemples ici a propos d'unlock recursif

2 - l'utilitaire que tu as utilise a peut etre preservé les droits donc tu as besoin d'un sudo, ce qui ne reglera pas le probleme des Cracrabon locks voir number 1 to solve the puzzle

3 - tu dois resoudre quelques defis en bash concernant les nom de fichiers

4 - je ferais 40 lignes de C en utilisant Carbon pour faire l'operation, cad garder les resources fork unlocker, unicode safe ecetera

bash c'est bien mais ca peut etre tricky avec des noms utilisant des char unicode et mener a la catastrophe mv each file on the same target other and other again... le temps que tu te rendes compte du missfits tu auras deja detruit plusieurs dizaine de fichiers

utiliser ditto serait deja une bonne chose pour copier ou /Developer/Tools/CpMac /Developer/Tools/MvMac ecetera


----------

