Script ménage fichiers anciens UNIX
Fermé
dift
Messages postés
9
Date d'inscription
samedi 29 mars 2008
Statut
Membre
Dernière intervention
1 janvier 2011
-
10 déc. 2010 à 14:06
dift - 11 déc. 2010 à 21:16
dift - 11 déc. 2010 à 21:16
Bonjour,
Je souhaite créer un script unix qui permettrait de faire du ménage ds des répertoires spécifiques.
J'aimerai choisir une date à partir de laquelle le script supprimerai les fichiers.
merci beaucoup
cela m'aiderai bcp
config unix aix
Je souhaite créer un script unix qui permettrait de faire du ménage ds des répertoires spécifiques.
J'aimerai choisir une date à partir de laquelle le script supprimerai les fichiers.
merci beaucoup
cela m'aiderai bcp
config unix aix
A voir également:
- Script ménage fichiers anciens UNIX
- Script vidéo youtube - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Fichiers epub - Guide
- Explorateur de fichiers - Guide
2 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 423
10 déc. 2010 à 14:40
10 déc. 2010 à 14:40
Salut,
Sous réserve ne sachant pas si la commande find sous AIX accepte tous les paramètres...
L'idée créer un fichier de référence à la date voulu (ici 1er aout 2010 12h00) :
Puis lancer une recherche sur les fichiers d'un répertoire donné et de ses sous répertoires, avec comme condition que ce soit des fichiers (-type f) pas plus récent (-newer exprimé par la négation '!') que le fichier de référence. Ce qui donne :
Qui devrait t'afficher les fichiers en question. Si c'est bon il suffira de rajouter la commande de suppression :
Sous réserve ne sachant pas si la commande find sous AIX accepte tous les paramètres...
L'idée créer un fichier de référence à la date voulu (ici 1er aout 2010 12h00) :
touch -t 201008012000 toto
Puis lancer une recherche sur les fichiers d'un répertoire donné et de ses sous répertoires, avec comme condition que ce soit des fichiers (-type f) pas plus récent (-newer exprimé par la négation '!') que le fichier de référence. Ce qui donne :
find /chemin ! -newer toto -type f
Qui devrait t'afficher les fichiers en question. Si c'est bon il suffira de rajouter la commande de suppression :
find /chemin ! -newer toto -type f -exec rm -f {} \;
dift
Messages postés
9
Date d'inscription
samedi 29 mars 2008
Statut
Membre
Dernière intervention
1 janvier 2011
10 déc. 2010 à 17:52
10 déc. 2010 à 17:52
merci pour votre réponse
c'est exactement ce dont j'ai besoin.
Par contre, je ne comprends pas très bien la syntaxe.
Je suis débutant sous unix.
notamment la commande -exec
je pense qu'elle signifie execution de la suite du script
c'est exactement ce dont j'ai besoin.
Par contre, je ne comprends pas très bien la syntaxe.
Je suis débutant sous unix.
notamment la commande -exec
je pense qu'elle signifie execution de la suite du script
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 423
10 déc. 2010 à 18:15
10 déc. 2010 à 18:15
En fait elle exécute la commande du shell qui est placée juste après (rm dans ton cas).
Commande "rm" qui prend en argument chaque occurrence de fichier correspondant à la recherche, occurrence représentée par "{}".
On achève la commande "find" par "\;" (ici on est obligé d'échapper le caractère ";" parce que c'est un caractère aussi utilisé par le shell, afin qu'il ne soit pas interprété par le dit shell).
Commande "rm" qui prend en argument chaque occurrence de fichier correspondant à la recherche, occurrence représentée par "{}".
On achève la commande "find" par "\;" (ici on est obligé d'échapper le caractère ";" parce que c'est un caractère aussi utilisé par le shell, afin qu'il ne soit pas interprété par le dit shell).
dift
Messages postés
9
Date d'inscription
samedi 29 mars 2008
Statut
Membre
Dernière intervention
1 janvier 2011
10 déc. 2010 à 20:20
10 déc. 2010 à 20:20
pourtant ce caractère ; n'est pas présent dans le script.
j'avoue ne pas comprendre pourquoi isoler ce caractère
merci
j'avoue ne pas comprendre pourquoi isoler ce caractère
merci
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 423
11 déc. 2010 à 10:21
11 déc. 2010 à 10:21
Parce que il fait partie intégrale de la syntaxe de "find", du moins du paramètre "-exec". Si on ne l'échappe pas, il sera interprété par le shell et de ce fait la commande find retournera une erreur :
Extrait du man :
find: Paramètre manquant pour « -exec »
Extrait du man :
-exec commande ; Exécute la commande ; vrai si le code de retour 0 est renvoyé. Tous les arguments suivants de find sont considérés comme des arguments pour la ligne de commande, jusqu'à ce qu'on rencontre un ';'. La chaîne '{}' est remplacée par le nom du fichier en cours de traitement, et ceci dans toutes ses occurrences, pas seulement aux endroits où elle est isolée, comme c'est le cas avec d'autres versions de find. Ces deux chaînes peuvent avoir besoin d'être protégées du développement de la ligne de commande par le shell, en utilisant le caractère d'échappement ('\') ou une protection par des apostrophes. La commande est exécutée depuis le répertoire de départ.
ok
J'ai compris le principe.
merci beaucoup
Désolé si j'abuse mais si je souhaite mettre cela sous forme d'un script.
Comment dois-je m'y prendre?
L'idée, une fois le script lancé, serait de ne rentrer que la date sous le format que vous m'avez indiqué.
Je dois créer une variable, je présume, remplaçant la date de référence.
Bien cordialement,
J'ai compris le principe.
merci beaucoup
Désolé si j'abuse mais si je souhaite mettre cela sous forme d'un script.
Comment dois-je m'y prendre?
L'idée, une fois le script lancé, serait de ne rentrer que la date sous le format que vous m'avez indiqué.
Je dois créer une variable, je présume, remplaçant la date de référence.
Bien cordialement,
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 423
11 déc. 2010 à 13:39
11 déc. 2010 à 13:39
Il suffit de passer un paramètre au script depuis la ligne de commande sous la forme AnnéeMoisJourHeureMinute (Ex : 201001010001) et de passer ce paramètre à la commande "touch" :
touch -t "$1" toto