#1 Le 07/12/2015, à 01:23
- palima
Scripts tri photos et heure différée
[Désolé aux modérateurs, mais j'ai vu après coup que ce n'était pas la bonne section pour les demandes d'aide. Mais je n'ai pas trouvé l'option de suppression. ESt-ce que je crée un nouveau fil de disccusion dans la bonne section en laissant celui-là ou est-ce que vous voulez le transférer ?]
Note : Je ne suis pas sur Ubuntu mais sous Mint mais comme le forum de Mint ne marche pas vraiment, je resposte mon message ici (puisqu'Ubuntu et Mint se ressemblent)
Bonjour à tous,
J'ai actuellement des problèmes sur deux scripts :
Pour le premier, je ne sais même pas comment commencer.
J'ai deux dossiers de photos : l'un des deux est incomplet mais les photos sont bien triés, le deuxième contient toutes les photos mais elles ne sont pas triées.
Les noms des photos ne correspondent pas.
Mon but : comparer toutes les photos des deux dossiers et supprimer les doublons.
Mais je n'ai pas réussi à trouver comment savoir si deux photos étaient les mêmes sachant que les noms sont différents.
Pour le second, c'est du débuguage
Le but est de m'aider à m'endormir et mettre en hibernation l'ordinateur à minuit en semaine et si l'ordinateur est rallumé, de le remettre en hibernation.
J'ai fait un crontab -e et j'ai rajouté ceci :
55 23 * * 0-5 adresse absolue d'un script >> adresse absolue d'un fichier de log 2>&1
*/30 0-8 * * 0-5 adresse absolue d'un script >> adresse absolue d'un fichier de log 2>&1
Le script en question :
#!/bin/bash
zenity --question --text="Il est l'heure de dormir mon enfant. Veux-tu y aller maintenant ? Sinon, je te laisse encore 5 minutes, pas une de plus";
if [ $? -eq 1 ]
then
sleep 4.5m
zenity --warning --text="Plus que 30 secondes avant l'arrêt !"
sleep 30
fi
echo disk | sudo tee /sys/power/state
Lorsque je teste le script indépendamment, il me dit
tee: /sys/power/state: No such device
ça n'a pas l'air d'un problème d'autorisation mais voici ce qu'il y a dans mon sudoers (j'ai rajouté la dernière ligne, les autres étant dus au fait que je suis en session live):
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
mint ALL=(root) NOPASSWD:/usr/bin/tee /sys/power/state
Pouvez vous m'aider sur l'un deux scripts ?
Merci d'avance et bonne soirée,
Palima
Dernière modification par palima (Le 07/12/2015, à 01:43)
Hors ligne
#2 Le 07/12/2015, à 07:29
- pingouinux
Re : Scripts tri photos et heure différée
Bonjour,
Question 1 :
md5sum dossier_1/* dossier_2/* | sort
Les fichiers identiques seront regroupés.
Question 2 :
echo disk | sudo tee /sys/power/state
Cette commande va écrire le mot disk dans le fichier /sys/power/state (à la place de ce qui s'y trouve). Est-ce bien ce que tu veux faire ?
Je ne pourrai pas en dire plus…
Hors ligne
#3 Le 12/12/2015, à 21:47
- palima
Re : Scripts tri photos et heure différée
Premier script :
Merci de la réponse mais la commande "sort" ne marche pas car elle permet juste d'afficher la liste des fichiers en commun.
Par contre, en faisant de la recherche dessus, j'ai découvert le programme fdupes qui fait exactement ce que je veux ! Il suffit de donner le nom des dossiers, il détecte tous les doublons même avec des noms différents puis il demande lequel il veut veut supprimer (voir capture d'écrancapture d'écran). Le programme est intercatif. Problème : j'ai beaucoup trop de fichiers et je cherche à automatiser le choix du dossier dans lequel la photo sera conservée. Mais je n'y arrive pas : je ne vois pas comment mon script peut écrire quelque chose à l'intérieur d'un programme.
Si j'écris un "echo" dans mon script après avoir appelé fdupes, ne va-t-il pas attendre que fdupes se finisse donc attendre infinement plutôt que de s'éxécuter au moment où fdupes est en cours d'éxécution et attend la réponse de l'utilisateur ?
Second script :
Ah bah oui, j'ai revérifié sur Internet et je vois pas où j'ai pu voir que c'était la bonne commande. Je suis tombé sur "sudo pm-suspend" et en le testant tout seul, ça marche ! Je vous dirai dès dimanche soir, si mon crontab fonctionne. Merci bien
Hors ligne
#4 Le 12/12/2015, à 23:01
- pingouinux
Re : Scripts tri photos et heure différée
la commande "sort" ne marche pas car elle permet juste d'afficher la liste des fichiers en commun
Non, la première commande en #2 affiche tous les fichiers non cachés des deux répertoires.
Hors ligne
#5 Le 12/12/2015, à 23:08
- palima
Re : Scripts tri photos et heure différée
Oui, pardon, j'ai parlé trop vite. voilà ce que je voulais dire :
"la commande sort ne me convient pas car elle se contente d'afficher tous les fichiers en les triant donc en regroupant ceux qui sont en commun mais elle n'agit pas sur les fichiers : je veux supprimer l'un des fichiers en commun d'où l'utilisation de fdupes"
Hors ligne
#6 Le 12/12/2015, à 23:16
- pingouinux
Re : Scripts tri photos et heure différée
Ah OK, je comprends mieux.
Hors ligne
#7 Le 12/12/2015, à 23:36
- palima
Re : Scripts tri photos et heure différée
Du coup as-tu une idée pour mon problème de script que je cherche à éxécuter à l'intérieur d'un programme ?
Hors ligne
#8 Le 13/12/2015, à 06:17
- pingouinux
Re : Scripts tri photos et heure différée
Désolé, je n'ai jamais utilisé fdupes. De toute façon, tu devras faire un choix pour chaque fichier, à moins que tu n'aies une règle du genre "si 2 fichiers sont identiques dans repertoire_1 et repertoire_2, je supprime celui de repertoire_1".
Hors ligne
#9 Le 13/12/2015, à 14:09
- palima
Re : Scripts tri photos et heure différée
Je m'en suis sorti autrement en n'utilisant pas l'option -d mais en utilisant le miniscript suivant :
for doublon in `fdupes -rf b/ c/` ;do
rm $doublon;
done
b et c sont deux dossiers tests.
Problème : la gestion des espaces. Il ne fait pas la difference entre un nom de fichier avec un espace dedans et deux fichiers à la suite. Pour remplacer tous les espaces des fichiers par des underscores, j'ai fait ce programme récursif nommé espace_underscore, après avoir rajouté le dossier dans le PATH :
#!/bin/bash
rename 's/ /_/g' *;
for i in . ;do
if [ -d $i ]; then
cd $i;
espace_underscore;
fi
done
Il me dit :
./espace_underscore: 7: ./espace_underscore: espace_underscore: Permission denied
En mettant un sudo en appelant le script, il me met :
./espace_underscore: 7: ./espace_underscore: espace_underscore: not found
Note : j'ai essayé d'utiliser find avec l'option exec suivie de rename. Mais ça pose un problème puisque le nom des dossiers change entre deux rename, donc il ne reconnaît plus le chemin d'accès des fichiers
Je désespère d'y arriver Des idées ?
Hors ligne
#10 Le 13/12/2015, à 15:17
- pingouinux
Re : Scripts tri photos et heure différée
for doublon in `fdupes -rf b/ c/` ;do rm $doublon; done
Je ferais plutôt quelque chose comme ça (pas testé, enlever le echo si c'est bon)
while read doublon
do
echo rm "$doublon"
done < <(fdupes -rf b/ c/)
Tu peux aussi regarder ces options de fdupes qui peuvent être utiles pour éviter de faire une boucle (à utiliser avec précaution)
-d --delete
prompt user for files to preserve, deleting all others (see
CAVEATS below)-N --noprompt
when used together with --delete, preserve the first file in
each set of duplicates and delete the others without prompting
the user
Hors ligne
#11 Le 13/12/2015, à 20:35
- palima
Re : Scripts tri photos et heure différée
Ouf, ça marche ! A un petit détail près : pour une raison que j'ignore, à chaque rm d'un fichier, il veut en plus, juste après exécuter rm sans argument. J'ai essayé de chercher la solution mais puisque ça renvoyait juste un message d'erreur sans changer le reste du script, j'ai laissé comme ça.
Quant à fdupes, j'avais déjà utilisé -d mais ça demande à l'utilisateur de faire un choix pour chaque fichier, ce que je ne pouvais pas me permettre vu le nombre de fichiers.
Mais merci de ta part ! En plus, j'ai appris pas mal de trucs.
Hors ligne
#12 Le 13/12/2015, à 22:03
- pingouinux
Re : Scripts tri photos et heure différée
pour une raison que j'ignore, à chaque rm d'un fichier, il veut en plus, juste après exécuter rm sans argument
Je ne comprends pas ce que tu veux dire. Il faudrait faire un copier-coller de la commande lancée et du message d'erreur.
Quant à fdupes, j'avais déjà utilisé -d mais ça demande à l'utilisateur de faire un choix pour chaque fichier, ce que je ne pouvais pas me permettre vu le nombre de fichiers.
D'après la doc, il suffit normalement d'ajouter l'option -N.
Hors ligne
#13 Le 31/12/2015, à 18:06
- palima
Re : Scripts tri photos et heure différée
Désolé de cette réponse si tardive mais voilà le script en question.
#!/bin/bash
fdupes -rf Basile/ General/ | sed '$ s/.$//' > doublon;
while read doublon
do
rm "$doublon"
done < doublon
rm doublon;
Mais ça n'a pas une grande importance puisque c'est juste un problème d'affichage.
Hors ligne