Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1357 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Scanner fichiers et supprimer si supérieurs à xxx Mo

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Scanner fichiers et supprimer si supérieurs à xxx Mo

n°782321
Proxounet
Posté le 14-02-2006 à 16:03:57  profilanswer
 

Bonjour,
 
Je connais simplement les commandes de base sous linux
j'aimerai faire une tache cron qui scanne tous les fichiers de /home et supprime ceux supérieurs à un certain poids
 
je n'ai aucune idée de quoi faire, par ou commencer etc :s
 
 
 
j'aimerais également faire une tâche un peu plus compliquée qui scanne le code source de fichiers web ayant un certain nom, et si ils ne comportent pas une certaine partie, ils sont également supprimés
 
 
merci beaucoup !

mood
Publicité
Posté le 14-02-2006 à 16:03:57  profilanswer
 

n°782343
jlighty
Posté le 14-02-2006 à 16:37:06  profilanswer
 

Pour ton premier problème :  
find couplé avec une boucle for puis rm
Pour le second :
si c'est une ligne particulière type : "<? echo toto ?>"
alors utilise grep <chaine spécifique> , si grep ne retourne rien -> suppression du fichier.
 

n°782346
Proxounet
Posté le 14-02-2006 à 16:47:12  profilanswer
 

je n'ai trouvé que -atime et -name comme attribut find :s
pour grep ca a l'air plus facile il n'a que ca comme fonction
 
aussi comment faire pour supprimer le fichier si il a cette fonction ?
j'ai trouvé la commande, rm, mais comment faire dans ce cas ?
il y a un système de If "" > "" ?
 
 
et finalement, comment mettre en place ces commandes ? dans un ficheir bash c'est ca ? (j'en ai entendu parlé rbièvement)


Message édité par Proxounet le 14-02-2006 à 16:47:58
n°782350
jlighty
Posté le 14-02-2006 à 16:54:13  profilanswer
 

Citation :

je n'ai trouvé que -atime et -name comme attribut find :s


tu as mal cherché -> "man find" puis regarde l'option -size  

Citation :

dans un ficheir bash c'est ca ?


Oui

n°782351
arghbis
salops de dauphins
Posté le 14-02-2006 à 16:56:15  profilanswer
 

find /home -type f -size -2k -exec rm "{}" \;
(supprime les fichiers de taille inférieure à 2 ko, +2k pour taille supérieure à 2ko et 2k pour taille strictement égale à 2ko)
 
pour le second : grep -e "ton expression" -L -r -s /home | xargs rm
(ça ne marche que si ton expression est contenue dans une ligne)

n°782356
Proxounet
Posté le 14-02-2006 à 17:05:22  profilanswer
 

Apres ptite recherche sur bash apparemment i lfaut simplement le faire commencer par #!/bin/bash ?
 
donc, pour Taille supérieure a 1Mo :
 
#!/bin/bash
find /home -type f -size +1M -exec rm "{}" \;
grep -e "ton expression" -L -r -s /home | xargs rm
 
Mais peut on spécifier le nom des fichiers à scanner par grep ? en l occurence ce ne sont que des fichiers type 1nom.htm 1nom.html etc etc
 
 
 
Est ce que je peux etre un petit peu féniant et vous demander qques explications ? :sweat:  
 
par exemple que veux dire "-type f"  
et a quoi sert \; ? \pour arreter la suppression et ; pour passer a la ligne suivante ?
et -L -r ? et finalement pourquoi un "exec" et un "xargs" ? il y a un truc diff comme cela pour chaque commande ?  :pt1cable:


Message édité par Proxounet le 14-02-2006 à 17:07:54
n°782361
jlighty
Posté le 14-02-2006 à 17:11:47  profilanswer
 

Citation :

par exemple que veux dire "-type f"


"man find"

-type c
              Fichier du type c  
              f      fichier régulier


même chose pour -exec (partie action)
 
pour xargs -> man xargs

n°782363
Proxounet
Posté le 14-02-2006 à 17:13:50  profilanswer
 

Dak merci je n'ai pas encore le réflexe de MAN dont tout le monde aprle pourtant
 
par contre ce qui membete c'est pour scanner les ficheirs portant un certain nom :(

n°782366
jlighty
Posté le 14-02-2006 à 17:16:38  profilanswer
 

Citation :

par contre ce qui membete c'est pour scanner les ficheirs portant un certain nom :(


Pourquoi, la ligne de commande ne te convient pas ? tu aurais un exemple ?

n°782370
Proxounet
Posté le 14-02-2006 à 17:20:56  profilanswer
 

Oui par exemple si il scanne un fichier truc.php ne comportant pas l'expression voulue, il va le supprimer,  
alors que je voudrais qu'il ne fasse ca que pour les fichiers portant certains nom : 1certainnom.htm, 1certainnom.html, 1certainnom.php ...


Message édité par Proxounet le 14-02-2006 à 17:21:18
mood
Publicité
Posté le 14-02-2006 à 17:20:56  profilanswer
 

n°782371
Proxounet
Posté le 14-02-2006 à 17:23:25  profilanswer
 

je crois avoir trouvé file --file=FICHIER dans le man
 
 
       -f FICHIER, --file=FICHIER
              Lire les motifs dans le FICHIER indiqué, un motif par ligne.  Un
              fichier  vide ne contient aucun motif, si bien qu'aucune concor-
              dance n'est trouvée.
 
Pouvez vous confirmer ? comment séparer les diff noms de ficheirs a scanner ?

n°782373
jlighty
Posté le 14-02-2006 à 17:32:16  profilanswer
 

ensuite tu peux utiliser l'option -name de find ;)

n°782399
Proxounet
Posté le 14-02-2006 à 18:52:47  profilanswer
 

Ca fera un truc du genre
 
#!/bin/bash
find /home -type f -size +1M -exec rm "{}" \;
find /home -type f -name 1nom.htm 1nom.html -exec grep -e "ton expression" -L -r -s /home | xargs rm
 
?


Message édité par Proxounet le 14-02-2006 à 18:53:17
n°782405
jlighty
Posté le 14-02-2006 à 19:01:43  profilanswer
 

Citation :

-name 1nom.htm 1nom.html


attention c'est un motif à mettre :
ex: -name "*.php"

n°782411
Proxounet
Posté le 14-02-2006 à 19:34:08  profilanswer
 

Donc :
 
#!/bin/bash
find /home -type f -size +1M -exec rm "{}" \;
find /home -type f -name "1nom.htm 1nom.html" -exec grep -e "ton expression" -L -r -s /home | xargs rm  
 
?
Et l'éxec se fait sous cette syntaxe ?

n°782447
jlighty
Posté le 14-02-2006 à 20:52:17  profilanswer
 

le 2ème non :
-exec grep -e "ton expression"
peut être que ça devrait mieux marcher :
-exec grep -e "ton expression" -L -r -s "{}" | xargs rm\;
 
sinon le motif "1nom.htm 1nom.html" est incorrect
regarde les exemples de motif donnés dans "man find"

n°782464
Proxounet
Posté le 14-02-2006 à 21:24:19  profilanswer
 

Comprends rien aux motifs :s
 
       -name motif
              Fichier  dont  le  nom  de  base (sans les répertoires du chemin
              d'accès), correspond au motif  du  shell.   Les  méta-caractères
              (`*', `?', et `[]') ne sont jamais mis en correspondance avec un
              point `.'  au début du nom.  Pour ignorer un  répertoire,  ainsi
              que  tous  ses sous-répertoires, utiliser l'option -prune ; vous
              trouverez un exemple dans la description de l'option -path.

n°782468
jlighty
Posté le 14-02-2006 à 21:32:58  profilanswer
 

dans le man :

Par exemple, pour mettre en correspondance
              un fichier nommé `./fubar3', vous pouvez  utiliser  les  expres-
              sions rationnelles `.*bar.' ou `.*b.*3', mais pas `b.*r3'.


Dans ton cas, tu veux les fichiers 1nom.html et 1nom.htm
le motif sera : "1nom.htm*"

n°782474
Proxounet
Posté le 14-02-2006 à 21:44:46  profilanswer
 

haaa d'accord ou même 1nom.*
merci beaucoup ;)

n°782478
Proxounet
Posté le 14-02-2006 à 21:59:14  profilanswer
 

Citation :

find: Type invalide pour l'option -size `M'
find: Paramètre manquant pour `-exec'
xargs: rm;: Aucun fichier ou répertoire de ce type


 
> donc j'ai remplacé par 1000K, ca marchait pas, donc par 1000000, plus de message d'erreur mais ca ne marchait toujours pas
 
j'ai donc remplacé /home par /home/*,
> marche toujours pas


Message édité par Proxounet le 14-02-2006 à 21:59:22
n°782480
jlighty
Posté le 14-02-2006 à 22:01:07  profilanswer
 

par contre, il faudra adapter grep de exec, car la commande 'grep -e "ton expression" -L -r -s /home' va examiner tous les fichier du répertoire /home
Donc si le fichier ne contient pas "maligne" -> on le supprime

test -z "`grep -e "maligne" "{}"`" && rm "{}"


à tester, peut être y aura t-il des problèmes de quote. Dans tous les cas n'execute pas de rm "{}" mais in echo "{}" pour être sûr que le script fonctionne.
 

n°782482
Proxounet
Posté le 14-02-2006 à 22:07:03  profilanswer
 

cela donne

Citation :

grep: {}: Aucun fichier ou répertoire de ce type
{}


 
En fait je ne suis pas trop sûr de ce que je devais faire avce ca  :sweat:  
je l'ai simplement mis dans un .sh exécutable, c'est bien cela a quoi le bout de code servait ?


Message édité par Proxounet le 14-02-2006 à 22:08:34
n°782485
jlighty
Posté le 14-02-2006 à 22:10:40  profilanswer
 

essaye comme ceci (à ajouter dans le find):

-exec test -z "`grep -e "ton expression" "{}"`" && rm "{}"


ou

-exec [ -z "`grep -e "ton expression" "{}"`" ] && rm "{}"


Message édité par jlighty le 14-02-2006 à 22:12:04
n°782487
Proxounet
Posté le 14-02-2006 à 22:18:16  profilanswer
 

Alors je met précisément cela donne pour chaque script sinon on va s'embrouiller :
 

Citation :

#!/bin/bash
find /home -type f -size +1000000 -exec rm "{}" \;
find /home -type f -name index.* -exec test -z "`grep -e "ton expression" "{}"`" && echo "{}"


 
donne
 

Citation :

grep: {}: Aucun fichier ou répertoire de ce type
find: Paramètre manquant pour `-exec'


 
 
------------------
 

Citation :

#!/bin/bash
find /home -type f -size +1000000 -exec rm "{}" \;
find /home -type f -name index.* -exec [ -z "`grep -e "ton expression" "{}"`" ] && rm "{}"


 
donne
 

Citation :

grep: {}: Aucun fichier ou répertoire de ce type
find: Paramètre manquant pour `-exec'


 
-------
 
sans oublier que j'ai viré le emsasge d'erreur pour la taille mais cela ne supprime rien :(
pour faire mes test :
j'ai créé un fichier /home/henri/index.php avec comme contenu test
un fichier /home/henri/jesaisplusquoi.mp3 supérieur a 1Mo
un fichier /home/henri/test/jesaisplusquoi.mp3 supérieur a 1Mo pour voir si cela amrche avec les sous répertoires


Message édité par Proxounet le 14-02-2006 à 22:20:07
n°782666
Proxounet
Posté le 15-02-2006 à 13:41:25  profilanswer
 

"touvé"

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Scanner fichiers et supprimer si supérieurs à xxx Mo

 

Sujets relatifs
Quota dossier personnel groupe d'utilisateurs+ limite taille fichiersCherche Scanner USB2
Fichiers linux -> Windows[procmail] supprimer un mail avec un corps précis
Partage de fichiers en vpnPartages de fichiers SAMBA galère
Association de fichiers dans kdeLimiter la taille des fichiers logs ?
[UNIX] - comparaison fichiersPermissions d'accès aux fichiers
Plus de sujets relatifs à : Scanner fichiers et supprimer si supérieurs à xxx Mo


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR