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 07/12/2015, à 02: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, à 02:43)

Hors ligne

#2 Le 07/12/2015, à 08: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… sad

Hors ligne

#3 Le 12/12/2015, à 22: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 smile

Hors ligne

#4 Le 13/12/2015, à 00:01

pingouinux

Re : Scripts tri photos et heure différée

palima a écrit :

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 13/12/2015, à 00: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 13/12/2015, à 00:16

pingouinux

Re : Scripts tri photos et heure différée

Ah OK, je comprends mieux.

Hors ligne

#7 Le 13/12/2015, à 00: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, à 07: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, à 15: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 sad Des idées ?

Hors ligne

#10 Le 13/12/2015, à 16:17

pingouinux

Re : Scripts tri photos et heure différée

palima a écrit :
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, à 21: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, à 23: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, à 19: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