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/2011, à 11:30

angelbracker

[RESOLU]utilisation find -size *** ?

Bonjour, étant encore débutant sous linux, je cherche à programmer sous VIM un trieur d'image selon la taille.
Explication:

Taille de référence 2Mo:

Mon_image.JPG (1,10Mo)=>Je change de dossier
Mon_image_2.JPG (2,10Mo)=>Je laisse ( et je recompresse avec mogrify plus tard)

voila mon code:

liste=`find -size 2000`
for fichier in $liste
do
if [ ! -d $fichier ] && [ -f $fichier ] && [ $fichier != 'Thumbs.db' ]
then
echo $fichier
#Déplacement des fichiers de moins de 2MO
mv -v /home/moi/Images/photos\ a\ modif/$fichier /home/moi/Images/photo/
fi
done 

Si conseil vous avez, je prend!!!
Et si je m'y prend mal et que la solution est beaucoup plus simple je prend aussi smile
mais je veux quand même comprendre

find -size ***

Dernière modification par angelbracker (Le 09/12/2011, à 10:14)

Hors ligne

#2 Le 07/12/2011, à 11:51

gl38

Re : [RESOLU]utilisation find -size *** ?

Il faudrait à find le dossier que tu veux trier :
find .
pour avoir la liste des fichiers du dossier courant et de ses sous-dossiers.

Il y  a une doc avec des exemples pour l'option size.

Cordialement,
Guy

Hors ligne

#3 Le 07/12/2011, à 12:30

Sciensous

Re : [RESOLU]utilisation find -size *** ?

tel que tu mets -size, il ne recherche QUE les fichiers ne faisant exactement 2Mo;
pour moins, il faut rajouter... le moins;
tu peux aussi préciser l'unité Mo plutot que 2000 qui n'est pas 2Mo car 2M=2*1024 en info;

soit:

-size -2M

perso, d'autres confirmeront ou non, autant faire directement le test d et f au début:

liste=`find -size -2M -type f ! -type d`

edit: tout doit pouvoir etre mis sur une commande:

find -size -2M -type f ! -type d -exec mv -v /home/moi/Images/photos/\ a\/ modif/{} /home/moi/Images/photo/ \;

edit:
enlevé un  -iname "" entré par erreur
+ \; à la fin car obligatoire avec exec
+ des '/\ ' car je n'avais pas vu les espaces => \ a et \ modif
j'ai tapé la commande trop rapidement; elle ne marche pas telle quelle...

Dernière modification par Sciensous (Le 08/12/2011, à 22:57)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#4 Le 07/12/2011, à 18:05

angelbracker

Re : [RESOLU]utilisation find -size *** ?

Merci pour votre aide! Bon le problème est pas encore résolu après une fausse manip j'ai perdu mon shell sous root
et j'arrive plus a le remettre pour le moment donc je pense que je vais passer par une réinstall...

Hors ligne

#5 Le 07/12/2011, à 20:03

pingouinux

Re : [RESOLU]utilisation find -size *** ?

Bonsoir,
Juste un remarque : je pense qu'il est inutile de tester ! -type d si on a testé -type f.

Hors ligne

#6 Le 07/12/2011, à 23:39

Sciensous

Re : [RESOLU]utilisation find -size *** ?

très juste big_smile


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#7 Le 08/12/2011, à 19:48

angelbracker

Re : [RESOLU]utilisation find -size *** ?

Sur le code que Sciensous après exécution du code la console me dis "paramètre manquant pour -exec" :s
et pourquoi " {} " après l'emplacement du dossier d'origine?

Hors ligne

#8 Le 08/12/2011, à 21:35

gl38

Re : [RESOLU]utilisation find -size *** ?

Je crois qu'il faut écrire '{}'
ça reprend le nom du fichier traité.
Cordialement,
Guy

Hors ligne

#9 Le 08/12/2011, à 22:03

Baronsed

Re : [RESOLU]utilisation find -size *** ?

Ce serait plutôt :

find -size -2M -type f -exec mv {} .. \;

(en supposant que tu sois déjà dans le répertoire courant). Sinon rien ne t'empêche d'ajouter un cd avant, ou même de créer un répertoire où les mettre (mkdir). s'il s'agit toujours des mêmes dossiers, ajoute donc un alias à ton .bashrc.

Hors ligne

#10 Le 08/12/2011, à 23:13

Sciensous

Re : [RESOLU]utilisation find -size *** ?

Une commande qui marche:

find /home/moi/Images/photos/\ a\/ modif -size -2M -type f -exec mv -v '{}' /home/moi/Images/photos \;

Edit:
pour le fun:

d="/home/moi/Images/photos"; find $d/\ a/\ modif -type f -exec mv -v '{}' $d  \;

Dernière modification par Sciensous (Le 08/12/2011, à 23:15)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#11 Le 09/12/2011, à 00:04

angelbracker

Re : [RESOLU]utilisation find -size *** ?

Grace à toute vos réponses j'ai réussi à trouver le bon compromis

"photo a modif " devient photos
"photo" reste "photo"

find /home/moi/Images/photos -size 2M -type f -exec mv -v '{}' /home/moi/Images/photo/ \

et seulement la les photos inférieur à 2Mo sont transférées. Pourquoi "2M" au lieu de "-2M" je ne sais pas... Mais sa marche J'ai plus qu'a coupler sa avec mogrify et mon script sera complet smile
Merci pour votre aide précieuse!!!

PS: je tourne sous le 11.10 de ubuntu

Hors ligne

#12 Le 09/12/2011, à 16:09

pingouinux

Re : [RESOLU]utilisation find -size *** ?

Bonjour,

angelbracker #11 a écrit :

Pourquoi "2M" au lieu de "-2M" je ne sais pas... Mais sa marche

-size -2M : fichiers dont la taille est inférieure ou égale à 1M                                            (0 <= taille <= 1048576)
-size  2M : fichiers dont la taille est supérieure à 1M et inférieure ou égale à 2M (1048577 <= taille <= 2097152)
-size +2M : fichiers dont la taille est supérieure à 2M                                            (2097153 <= taille)

Il était possible aussi de ne s'occuper que des fichiers .jpg

find /home/moi/Images/photos -type f -iname \*.jpg -size ....

Hors ligne

#13 Le 09/12/2011, à 16:59

aduxas

Re : [RESOLU]utilisation find -size *** ?

Je n'ai pas de système Ubuntu sous la main pour vérifier, pingouinux, mais là, tu me perturbes.

man find a écrit :

Numeric arguments can be specified as

       +n     for greater than n,

       -n     for less than n,

       n      for exactly n.

La doc online semble confirmer ceci.

Hors ligne

#14 Le 09/12/2011, à 17:25

angelbracker

Re : [RESOLU]utilisation find -size *** ?

Donc il faut que je fasse une double commande pour faire mv sur les photos de 0octet < image.jpg <= 2Mo? Ou il y a un autre moyen? C'est toujours utile de savoir smile

Hors ligne

#15 Le 09/12/2011, à 17:26

pingouinux

Re : [RESOLU]utilisation find -size *** ?

Salut aduxas,
J'ai été surpris aussi en faisant mes tests. En fait, il faut interpréter les choses comme ceci :

-size -2M     # Nb de M inférieur à 2
-size  2M     # Nb de M égal à 2 (c'est-à-dire >1 et <3)
-size +2M     # Nb de M supérieur à 2

Voici le résultat de mes tests :

$ ls -l tru.*
-rw-r----- 1 user user 1048575 2011-12-09 14:52 tru.1048575
-rw-r----- 1 user user 1048576 2011-12-09 14:52 tru.1048576 # 1M
-rw-r----- 1 user user 1048577 2011-12-09 14:52 tru.1048577
-rw-r----- 1 user user 2097151 2011-12-09 14:52 tru.2097151
-rw-r----- 1 user user 2097152 2011-12-09 14:53 tru.2097152 # 2M
-rw-r----- 1 user user 2097153 2011-12-09 14:53 tru.2097153

$ find -name tru.\* -size -2M
./tru.1048576
./tru.1048575

$ find -name tru.\* -size 2M
./tru.1048577
./tru.2097151
./tru.2097152

$ find -name tru.\* -size +2M
./tru.2097153

Hors ligne

#16 Le 09/12/2011, à 17:40

pingouinux

Re : [RESOLU]utilisation find -size *** ?

@angelbracker #14
Pour sélectionner les fichiers de façon précise, on peut donner leur taille en octets, et on peut mettre plusieurs tests dans une seule commande :

find ... -size +0c -size -2097153c ... # 0octet < image.jpg <= 2Mo (2 Mo = 2097152 octets)

Hors ligne