Purge IFS files sur une periode de nn jours
Citation de montreal33 le 28 février 2019, 10 h 34 minfind /DIR01/DIR02 -name '*.PDF' -type f -mtime +70
Affiche bien les fichiers
Mais la commande:
find /DIR01/DIR02 -name '*.PDF' -type f -mtime +70 -exec rm {} ;
me donne cette erreur:
find: 001-2191 The ending ';' character was not found.
$
find /DIR01/DIR02 -name '*.PDF' -type f -mtime +70
Affiche bien les fichiers
Mais la commande:
find /DIR01/DIR02 -name '*.PDF' -type f -mtime +70 -exec rm {} ;
me donne cette erreur:
find: 001-2191 The ending ';' character was not found.
$
Citation de montreal33 le 1 mars 2019, 9 h 43 minBonjour,
J'ai trouvé ça sur le net mais à priori ça ne fonctionne pas si j'ai un &dir plus de 32 char
Est-ce que vous avez une idée ?
Merci d'avance.
Sample CLP program to Delete IFS files based on Last Access Date or Modified Date
/* Delete IFS files based on Last Access or Modified Date + USE WITH CAUTION : No Guarantee provided ! + + + TO COMPILE: + + CRTPF FILE(QTEMP/MYFILE) RCDLEN(1000) + CRTCLPGM PGM(DELIFS) SRCFILE(Your_lib/Source) + + TO RUN: + + CALL DELIFS PARM('/Dir1/Dir2/..' 'A' '5') + Delete Files in IFS based on Last Access Date + Note:The access time of directories in path is changed by + find command itself. + + CALL DELIFS PARM('/Dir1/Dir2/..' 'M' '5') + Delete Files in IFS based on Last Modified Date + + PARAMETERS: + &DIR = Directory path + Do not just put / as it means the root of the IFS + &TYPE = A=Access Date M=Modfied Date + &DAYS = No. of Days + */ PGM PARM(&DIR &TYPE &DAYS) DCL VAR(&DIR) TYPE(*CHAR) LEN(32) /* You can increase the length from 32 to + something else but remember if the lenngth + is more than 32 then you can't call from + command line OR make a COMMAND */ DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) DCL VAR(&DAYS) TYPE(*CHAR) LEN(4) DCL VAR(&CMD) TYPE(*CHAR) LEN(250) DCL VAR(&EOF) TYPE(*LGL) VALUE('0') DCLF FILE(QTEMP/MYFILE) /* This will have the list of files */ DLTF FILE(QTEMP/MYFILE) MONMSG MSGID(CPF0000) CRTPF FILE(QTEMP/MYFILE) RCDLEN(1000) /* Run Qshell "find" command to load the fileNames + based on your criteria into the MYFILE in QTEMP */ OVRDBF FILE(STDOUT) TOFILE(QTEMP/MYFILE) IF COND(&TYPE *EQ 'A') THEN(DO) CHGVAR VAR(&CMD) VALUE('find' *BCAT &DIR *BCAT + '-atime +' *CAT &DAYS *BCAT '-type f') ENDDO IF COND(&TYPE *EQ 'M') THEN(DO) CHGVAR VAR(&CMD) VALUE('find' *BCAT &DIR *BCAT + '-mtime +' *CAT &DAYS *BCAT '-type f') ENDDO STRQSH CMD(&CMD) DLTOVR FILE(STDOUT) /* Loop thru each IFS file and Delete */ LOOP: RCVF MONMSG MSGID(CPF0864) EXEC(CHGVAR VAR(&EOF) + VALUE('1')) IF COND(&EOF *EQ '0') THEN(DO) QSYS/DEL OBJLNK(&MYFILE) GOTO CMDLBL(LOOP) ENDDO /* You can comment this LINE to get the deleted files LIST */ DLTF FILE(QTEMP/MYFILE) ENDPGM
Bonjour,
J'ai trouvé ça sur le net mais à priori ça ne fonctionne pas si j'ai un &dir plus de 32 char
Est-ce que vous avez une idée ?
Merci d'avance.
Sample CLP program to Delete IFS files based on Last Access Date or Modified Date
/* Delete IFS files based on Last Access or Modified Date + USE WITH CAUTION : No Guarantee provided ! + + + TO COMPILE: + + CRTPF FILE(QTEMP/MYFILE) RCDLEN(1000) + CRTCLPGM PGM(DELIFS) SRCFILE(Your_lib/Source) + + TO RUN: + + CALL DELIFS PARM('/Dir1/Dir2/..' 'A' '5') + Delete Files in IFS based on Last Access Date + Note:The access time of directories in path is changed by + find command itself. + + CALL DELIFS PARM('/Dir1/Dir2/..' 'M' '5') + Delete Files in IFS based on Last Modified Date + + PARAMETERS: + &DIR = Directory path + Do not just put / as it means the root of the IFS + &TYPE = A=Access Date M=Modfied Date + &DAYS = No. of Days + */ PGM PARM(&DIR &TYPE &DAYS) DCL VAR(&DIR) TYPE(*CHAR) LEN(32) /* You can increase the length from 32 to + something else but remember if the lenngth + is more than 32 then you can't call from + command line OR make a COMMAND */ DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) DCL VAR(&DAYS) TYPE(*CHAR) LEN(4) DCL VAR(&CMD) TYPE(*CHAR) LEN(250) DCL VAR(&EOF) TYPE(*LGL) VALUE('0') DCLF FILE(QTEMP/MYFILE) /* This will have the list of files */ DLTF FILE(QTEMP/MYFILE) MONMSG MSGID(CPF0000) CRTPF FILE(QTEMP/MYFILE) RCDLEN(1000) /* Run Qshell "find" command to load the fileNames + based on your criteria into the MYFILE in QTEMP */ OVRDBF FILE(STDOUT) TOFILE(QTEMP/MYFILE) IF COND(&TYPE *EQ 'A') THEN(DO) CHGVAR VAR(&CMD) VALUE('find' *BCAT &DIR *BCAT + '-atime +' *CAT &DAYS *BCAT '-type f') ENDDO IF COND(&TYPE *EQ 'M') THEN(DO) CHGVAR VAR(&CMD) VALUE('find' *BCAT &DIR *BCAT + '-mtime +' *CAT &DAYS *BCAT '-type f') ENDDO STRQSH CMD(&CMD) DLTOVR FILE(STDOUT) /* Loop thru each IFS file and Delete */ LOOP: RCVF MONMSG MSGID(CPF0864) EXEC(CHGVAR VAR(&EOF) + VALUE('1')) IF COND(&EOF *EQ '0') THEN(DO) QSYS/DEL OBJLNK(&MYFILE) GOTO CMDLBL(LOOP) ENDDO /* You can comment this LINE to get the deleted files LIST */ DLTF FILE(QTEMP/MYFILE) ENDPGM
Citation de vazymimil le 1 mars 2019, 10 h 36 minBonjour,
il faut mettre un antislash avant le point virdule pour que ça marche
ind /DIR01/DIR02 -name '*.PDF' -type f -mtime +70 -exec rm {} \;
pour le cl si c'est possible comme indiqué il faut agrandir le paramètre et faire une commande, par ex CRTCMD delifs delifs avec le source suivant (pas testé):
cmd 'Delete IFS file based on date'
parm directory *pname 256 min(1) prompt('Directory')
parm cmpdate *char 1 rstd(*yes) spcval((*access 'A') (*modification 'M')) min(1) prompt('Compared date')
parm days *char 4 min(1) prompt('No. of days')
Bonjour,
il faut mettre un antislash avant le point virdule pour que ça marche
ind /DIR01/DIR02 -name '*.PDF' -type f -mtime +70 -exec rm {} \;
pour le cl si c'est possible comme indiqué il faut agrandir le paramètre et faire une commande, par ex CRTCMD delifs delifs avec le source suivant (pas testé):
cmd 'Delete IFS file based on date'
parm directory *pname 256 min(1) prompt('Directory')
parm cmpdate *char 1 rstd(*yes) spcval((*access 'A') (*modification 'M')) min(1) prompt('Compared date')
parm days *char 4 min(1) prompt('No. of days')
Citation de jma le 1 mars 2019, 10 h 37 minBonjour,
Le programme ci dessous fonctionne très bien. Le chemin IFS et le nombre de jour est passé en paramètre.
PGM (&CHEMIN &JOURS)
DCL VAR(&CHEMIN) TYPE(*CHAR) LEN(1024)
DCL VAR(&JOURS) TYPE(*CHAR) LEN(4)
DCL VAR(&QSH) TYPE(*CHAR) LEN(2048)CHGVAR VAR(&QSH) VALUE('FIND' *BCAT &CHEMIN *BCAT +
'-type f -mtime +' *TCAT &JOURS *BCAT +
'-print | XARGS RM')QSH CMD(&QSH)
ENDPGM
Jean
Bonjour,
Le programme ci dessous fonctionne très bien. Le chemin IFS et le nombre de jour est passé en paramètre.
PGM (&CHEMIN &JOURS)
DCL VAR(&CHEMIN) TYPE(*CHAR) LEN(1024)
DCL VAR(&JOURS) TYPE(*CHAR) LEN(4)
DCL VAR(&QSH) TYPE(*CHAR) LEN(2048)
CHGVAR VAR(&QSH) VALUE('FIND' *BCAT &CHEMIN *BCAT +
'-type f -mtime +' *TCAT &JOURS *BCAT +
'-print | XARGS RM')
QSH CMD(&QSH)
ENDPGM
Jean
Citation de montreal33 le 1 mars 2019, 11 h 04 minA priori ça ne fonctionne pas,
J'ai essayé
la commande.
find /dir01/dir02 -type f -mtime +5 -print | xargs rm
find /dir01/dir02 -type f -mtime +5 -print | XARGS RMpour les droits c'est moi qui a crée le répertoire:
Droits sur ---Droits sur objet----
Opt Utilisat données Exist Gest Modif Réf
*PUBLIC *RWX X X X X
PGMR1 *RWX X X X X
Je ne sais pas ou ça coince.
j'ai essayé aussi le back slash et ça ne fonctionne pas
ind /DIR01/DIR02 -name '*.PDF' -type f -mtime +70 -exec rm {} \;
Merci de vos réponses.
A priori ça ne fonctionne pas,
J'ai essayé
la commande.
find /dir01/dir02 -type f -mtime +5 -print | xargs rm
find /dir01/dir02 -type f -mtime +5 -print | XARGS RM
pour les droits c'est moi qui a crée le répertoire:
Droits sur ---Droits sur objet----
Opt Utilisat données Exist Gest Modif Réf
*PUBLIC *RWX X X X X
PGMR1 *RWX X X X X
Je ne sais pas ou ça coince.
j'ai essayé aussi le back slash et ça ne fonctionne pas
ind /DIR01/DIR02 -name '*.PDF' -type f -mtime +70 -exec rm {} \;
Merci de vos réponses.
Citation de vazymimil le 1 mars 2019, 12 h 23 minChez moi ça fonction avec le back slash, ça fait une erreur ou ça ne fait rien ?
Parce que si ça ne fait rien c'est peu être parce-qu'il cherche l'extension en majuscule, faudrait essayer avec -name '*.[pP][dD][fF]'
Chez moi ça fonction avec le back slash, ça fait une erreur ou ça ne fait rien ?
Parce que si ça ne fait rien c'est peu être parce-qu'il cherche l'extension en majuscule, faudrait essayer avec -name '*.[pP][dD][fF]'
Citation de montreal33 le 1 mars 2019, 12 h 59 minMerci Vazymimil,
Voila ce qui m'affiche.
find /dir01/dir02 -name '*.PDF' -type f -mtime +1 -exec rm {} \;
find: 001-2191 The ending ';' character was not found.
$
Avec ça -name '*.[pP][dD][fF]'
aussi le même retour ---> find: 001-2191 The ending ';' character was not found.
$
Merci Vazymimil,
Voila ce qui m'affiche.
find /dir01/dir02 -name '*.PDF' -type f -mtime +1 -exec rm {} \;
find: 001-2191 The ending ';' character was not found.
$
Avec ça -name '*.[pP][dD][fF]'
aussi le même retour ---> find: 001-2191 The ending ';' character was not found.
$
Citation de remit le 1 mars 2019, 13 h 31 minUne commande qui peut peut-être servir :
RTVDIRINF DIR('/rep01/rep02') INFFILEPFX(ASUP_) INFLIB(UNE_BIB)
va créer deux fichiers dans la bibliothèque UNE_BIB : ASUP_O qui contient la liste des fichiers de /rep01/rep02/ et ASUP_D celle des répertoires.
À partir des informations contenues dans ASUP_O (notamment le nom et la date de création du fichier), on peut construire un CL de suppression de ces fichiers en fonction de la date de création.
Une commande qui peut peut-être servir :
RTVDIRINF DIR('/rep01/rep02') INFFILEPFX(ASUP_) INFLIB(UNE_BIB)
va créer deux fichiers dans la bibliothèque UNE_BIB : ASUP_O qui contient la liste des fichiers de /rep01/rep02/ et ASUP_D celle des répertoires.
À partir des informations contenues dans ASUP_O (notamment le nom et la date de création du fichier), on peut construire un CL de suppression de ces fichiers en fonction de la date de création.
Citation de montreal33 le 1 mars 2019, 13 h 54 minJ'ai essayé avec cette commande hier . Les enregistrements sont bien supprimés dans ASUP_O mais pas dans le'/rep01/rep02'.
J'ai essayé avec cette commande hier . Les enregistrements sont bien supprimés dans ASUP_O mais pas dans le'/rep01/rep02'.
Citation de vazymimil le 1 mars 2019, 14 h 16 minEst-ce ça passe mieux avec un c cédille (ç) si c'est ça il y a du jeu dans les CCSID
find /dir01/dir02 -name '*.PDF' -type f -mtime +1 -exec rm {} ç;
Est-ce ça passe mieux avec un c cédille (ç) si c'est ça il y a du jeu dans les CCSID
find /dir01/dir02 -name '*.PDF' -type f -mtime +1 -exec rm {} ç;