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 09/03/2018, à 14:50

salouaaa

[résolu]Aide sur la commande find et exec.

Bonjour tout le monde,  je suis débutante linux je travailles en ce moment sur les commandes shell.

J'ai besoin de chercher toutes les entités de type fichier de on répertoires courant et afficher "rm:chemin_trouve" si la dernière modif à été faites il y a plus de 365jr et "print:chemin_troué" dans le cas contraire.

J'ai essayé çaa c'est pas correct, si quelqu'un peut m'aider SVP.

find . -type f -name '*.bak' -mtime +365 '(' -exec echo rm:{} ';' ')' -o -exec echo print:{} ';'

Dernière modification par salouaaa (Le 10/03/2018, à 18:51)

Hors ligne

#2 Le 09/03/2018, à 17:13

Compte supprimé

Re : [résolu]Aide sur la commande find et exec.

Bonjour,

Perso je ferais :

find . -iname "*.bak" -mtime +365 -exec echo "rm: " {} ';'

pour afficher les fichiers datant de plus de 365 jours
et

find . -iname "*.bak" -mtime -365 -exec echo "print : " {} ';'

pour afficher les fichiers datant de plus de moins de 365 jours ...

cependant je suis aussi débutant ...:rolleyes:

#3 Le 09/03/2018, à 17:42

salouaaa

Re : [résolu]Aide sur la commande find et exec.

C'est correct aussi big_smile mais j'ai besoin que ce soit en une seule ligne de commande..pour apprendre comment utiliser le OU ( -o )

Merci pour ta réponse quand meme

Hors ligne

#4 Le 09/03/2018, à 18:37

pingouinux

Re : [résolu]Aide sur la commande find et exec.

Bonjour,
Essaye ceci :

find . -iname "*.bak" '(' '(' -mtime +365 -exec echo "rm: " {} ';' ')' -o '(' -mtime -365 -exec echo "print : " {} ';' ')' ')' 

mais tu n'auras pas les fichiers qui ont été modifiés il y a juste 365 jours.

Hors ligne

#5 Le 09/03/2018, à 18:45

moko138

Re : [résolu]Aide sur la commande find et exec.

si la dernière modif à été faites il y a plus de 365jr

Donc il faut compter ainsi : 
-mtime +366
-mtime -365

Et pour la seconde partie, je propose :

echo "--- Modifiés depuis 365 jours ou moins : "; find . -iname "*.bak" -daystart -mtime -365 -print

%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#6 Le 10/03/2018, à 11:38

credenhill

Re : [résolu]Aide sur la commande find et exec.

hello

find . -type f -name "*.bak" \( -mtime +365 -exec echo rm {} \; -o  -exec echo print {} \; \)

Hors ligne

#7 Le 10/03/2018, à 13:13

salouaaa

Re : [résolu]Aide sur la commande find et exec.

Merci à tous pour vos réponse!

@credenhill merci beaucoup c'est exactement ce qui est demandé smile

Hors ligne

#8 Le 10/03/2018, à 14:06

alex2423

Re : [résolu]Aide sur la commande find et exec.

credenhill a écrit :

hello

find . -type f -name "*.bak" \( -mtime +365 -exec echo rm {} \; -o  -exec echo print {} \; \)

Dans les exemples précédents, les parenthèses permettaient d'isoler les 2 commandes :
(on supprime les fichiers des plus de 365) ou (on affiche les fichiers de moins de 365 jours)

Dans ton cas, tu as englobé les 2 commandes avec les parenthèses. Quel est l'intéret des parenthèse dans ce cas. Ne pourrais tu pas les supprimer dans ce cas ?

Hors ligne

#9 Le 10/03/2018, à 14:32

credenhill

Re : [résolu]Aide sur la commande find et exec.

sans les (), les options -type et -name ne s'appliquent plus au 2 ème -mtime

$ touch z1.bak a b c; touch -t 194406060530 z2.bak
$ ls -ln
total 0
-rw-r--r-- 1 1000 1000 0 2018-03-10 13:26 a
-rw-r--r-- 1 1000 1000 0 2018-03-10 13:26 b
-rw-r--r-- 1 1000 1000 0 2018-03-10 13:26 c
-rw-r--r-- 1 1000 1000 0 2018-03-10 13:26 z1.bak
-rw-r--r-- 1 1000 1000 0 1944-06-06 05:30 z2.bak
$ find . -type f -name "*bak" \( -mtime +365 -exec echo rm {} \; -o  -exec echo print {} \; \)
rm ./z2.bak
print ./z1.bak
$ find . -type f -name "*bak" -mtime +365 -exec echo rm {} \; -o  -exec echo print {} \;
print .
rm ./z2.bak
print ./c
print ./z1.bak
print ./a
print ./b

Hors ligne

#10 Le 10/03/2018, à 18:56

salouaaa

Re : [résolu]Aide sur la commande find et exec.

Bien expliqué credenhill!

Pour que ce soit plus clair pour moi les parenthèses, j'ai remplacé ET et OU par * et + c'est la même composition d'opérations.

Hors ligne