Script
Fermé
freddelyon
-
17 mai 2007 à 22:40
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 11 juin 2007 à 11:07
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 11 juin 2007 à 11:07
A voir également:
- Script
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Script bat - Guide
- Microsoft activation script - Accueil - Windows
- Executeur de script - Télécharger - Édition & Programmation
7 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
17 mai 2007 à 23:34
17 mai 2007 à 23:34
Salut,
#!/bin/bash rep='/mnt/home/lami20j/trash/images' total=$(ls -1c $rep | wc -l) for fic in $(ls -1c $rep | tail -n $(($total - 50)));do rm -v ${rep}/$fic;done
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
17 mai 2007 à 23:34
17 mai 2007 à 23:34
[!edit: ls -1t et non ls -1r]
Bonsoir,
J'ai pas trop gratté, mais une méthode simple (ne nécessitant pas de grosse commandes, fichiers temporaire, etc) serait de commencer par déplacer l'integralité des fichier dans un répertoire (mettons tmp) puis de les lister par date décroissante (ls -1r tmp) de ne conserver que les 50 premier (head -50) et de les déplacer dans le répertoire d'origine et enfin de supprimer ce qu'il y a dans tmp.
Du coup, le script pourrait avoir cette tronche:
@+
Bonsoir,
J'ai pas trop gratté, mais une méthode simple (ne nécessitant pas de grosse commandes, fichiers temporaire, etc) serait de commencer par déplacer l'integralité des fichier dans un répertoire (mettons tmp) puis de les lister par date décroissante (ls -1r tmp) de ne conserver que les 50 premier (head -50) et de les déplacer dans le répertoire d'origine et enfin de supprimer ce qu'il y a dans tmp.
Du coup, le script pourrait avoir cette tronche:
#!/bin/sh mv *jpg tmp/ ls -1t tmp/* | head -50 |xargs -i file mv file . rm -rf tmp/*A tester dans un environnement des tests (pas de fichiers importants quoi) a améliorer sans doute selon ce qu'est censé contenir le répertoire de travail, en utilisant des chemin absolu, etc.
@+
salut!!
Excusez moi, pourriez me donner la precision sur le
for fic in $(ls -1c $rep | tail -n $(($total - 50)));do rm -v ${rep}/$fic;done.
Que represente fic, car il me demande le message $(ls -lc $rep | wc -l) -50: syntax error: operand expected (error token is "$(ls -lc $rep | wc -l) -50")
J'ai mis les deux quotes en vain.
Bonne journnee.
A tres bientot
Excusez moi, pourriez me donner la precision sur le
for fic in $(ls -1c $rep | tail -n $(($total - 50)));do rm -v ${rep}/$fic;done.
Que represente fic, car il me demande le message $(ls -lc $rep | wc -l) -50: syntax error: operand expected (error token is "$(ls -lc $rep | wc -l) -50")
J'ai mis les deux quotes en vain.
Bonne journnee.
A tres bientot
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
31 mai 2007 à 12:32
31 mai 2007 à 12:32
Salut,
affiche ton script complet et mets les balises code
fic c'est une variable qui sera rempli avec le nom de fichier
affiche ton script complet et mets les balises code
fic c'est une variable qui sera rempli avec le nom de fichier
Au fait, j'ai ecrit ceci,
#! /bin/bash
rep='/DATASAVE/'
total='$(ls -lc $rep | wc -l)'
for fic in (ls -lc $rep | tail -n $(($total -50)));
do
rm -v
${rep}/$fic;
done
#! /bin/bash
rep='/DATASAVE/'
total='$(ls -lc $rep | wc -l)'
for fic in (ls -lc $rep | tail -n $(($total -50)));
do
rm -v
${rep}/$fic;
done
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
31 mai 2007 à 13:46
31 mai 2007 à 13:46
Salut,
Dans ta formule "($total -50)", mets un espace entre le "signe moins" (-) et "50" :
Dans ta formule "($total -50)", mets un espace entre le "signe moins" (-) et "50" :
($total - 50);-))
salut!!
Excuser moi, j'ai ce message
rm: opérande manquante
Pour en savoir davantage, faites: « rm --help ».
SCRIPT_ROULEMENT.sh: line 7: /DATASAVE//(ls: Aucun fichier ou répertoire de ce type).
Si je veux conserver les images des 60 derniers jours par rapport à la date du jour. Quelles sont les modifs a faire.
Merci
Excuser moi, j'ai ce message
rm: opérande manquante
Pour en savoir davantage, faites: « rm --help ».
SCRIPT_ROULEMENT.sh: line 7: /DATASAVE//(ls: Aucun fichier ou répertoire de ce type).
Si je veux conserver les images des 60 derniers jours par rapport à la date du jour. Quelles sont les modifs a faire.
Merci
poumiZ
Messages postés
102
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
3 septembre 2010
10
8 juin 2007 à 11:42
8 juin 2007 à 11:42
Bonjour,
au moins 2 erreurs dans ton script:
total='$(ls -lc $rep | wc -l)' --> enlève les quotes
for fic in (ls -lc $rep | tail -n $(($total -50))); --> mets $ devant la parenthèse ouvrante: $(...
Peut-être une 3è: rm -v à mettre sur la même ligne que le fichier à supprimer ...
au moins 2 erreurs dans ton script:
total='$(ls -lc $rep | wc -l)' --> enlève les quotes
for fic in (ls -lc $rep | tail -n $(($total -50))); --> mets $ devant la parenthèse ouvrante: $(...
Peut-être une 3è: rm -v à mettre sur la même ligne que le fichier à supprimer ...
poumiZ
Messages postés
102
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
3 septembre 2010
10
8 juin 2007 à 20:37
8 juin 2007 à 20:37
la solution find me plaît pas mal:
find $MON_REPERTOIRE -mtime +60 -exec rm -print {} \;
Pour être sûr de ton coup, fais un petit test en remplaçant rm par ls -l
bye
find $MON_REPERTOIRE -mtime +60 -exec rm -print {} \;
Pour être sûr de ton coup, fais un petit test en remplaçant rm par ls -l
bye
poumiZ
Messages postés
102
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
3 septembre 2010
10
>
poumiZ
Messages postés
102
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
3 septembre 2010
8 juin 2007 à 22:09
8 juin 2007 à 22:09
pour affiner tes critères, tu peux rajouter type -f et -name "mes_fic*" soit:
find $MON_REPERTOIRE -type f -name "debut_de_nom_files*" -mtime +60 -exec rm -print {} \;
find $MON_REPERTOIRE -type f -name "debut_de_nom_files*" -mtime +60 -exec rm -print {} \;
Fred
>
poumiZ
Messages postés
102
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
3 septembre 2010
8 juin 2007 à 22:34
8 juin 2007 à 22:34
Salut!!
Merci bien, je vais le tester lundi car j'ai une station sur windows a la maison soit mon script avec une tronche:
#! /bin/bash
find $'/DATASAVE/' -type f -name "image*" -mtime +60 -exec rm -print {} \;
a la palce de rm je peux d'abord faire une commande ls-l
Ps: j'aurai des images sous la forme image1.jpg
Merci bien;
Bonne soiree.
Merci bien, je vais le tester lundi car j'ai une station sur windows a la maison soit mon script avec une tronche:
#! /bin/bash
find $'/DATASAVE/' -type f -name "image*" -mtime +60 -exec rm -print {} \;
a la palce de rm je peux d'abord faire une commande ls-l
Ps: j'aurai des images sous la forme image1.jpg
Merci bien;
Bonne soiree.
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
>
Fred
8 juin 2007 à 22:46
8 juin 2007 à 22:46
Salut,
Ps: j'aurai des images sous la forme image1.jpg
alors tu peux préciser le format des fichiers :
:-))
Ps: j'aurai des images sous la forme image1.jpg
alors tu peux préciser le format des fichiers :
find $'/DATASAVE/' -type f -name "image*.jpg" -mtime +60 -exec rm -print {} \;
:-))