Bonjour
Je dois réaliser un petit script, mais je bloque sur la partie finale depuis pas mal de temps et la franchement je ne voit pas comment m’en sortir.
Voila les détails:
But du script: chercher un fichier dans plusieurs répertoires et lister les repertoires n-2 ou ce fichier n’est pas présent.
Première phase, assez simple somme toute je cherche le fameux fichier dans 3 repertoires distincts que je liste dans un fichier sous un format assez clair (c’est simplement pour mon archivage)
find /volumeX/directory1/directory2/directory3/directory4/directorycible1/* -type f -newermt 2017-09-01 -iname "*union*.pdf" -exec ls -ltr {} \+ | awk '{ORS=" "; for(i=6;i<=NF;i++) print $i;print "\n"}' | sed -e "s/^ *//g" > /volumeX/home/admin/reunion1
find /volumeX/directory1/directory2/directory3/directory4/directorycible2/* -type f -newermt 2017-09-01 -iname "*union*.pdf" -exec ls -altr {} \+ | awk '{ORS=" "; for(i=6;i<=NF;i++) print $i;print "\n"}' | sed -e "s/^ *//g" >> /volumeX/home/admin/reunion1
find /volumeX/directory1/directory2/directory3/directory4/directorycible3/* -type f -newermt 2017-09-01 -iname "*union*.pdf" -exec ls -altr {} \+ | awk '{ORS=" "; for(i=6;i<=NF;i++) print $i;print "\n"}' | sed -e "s/^ *//g" >> /volumeX/home/admin/reunion1
A l’issu de cette recherche il me trouve bien le fichier test que j’ai mis en place
Sep 7 14:35 /volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier100/01-Documents/pour test admin-reunion.pdf
je liste ensuite tous les repertoires, la encore sur une période donnée, pour ne pas avoir un retour à rallonge
find /volumeX/directory1/directory2/directory3/directory4/directorycible1/* -maxdepth 0 -type d -newermt 2017-09-01 -exec ls -ld {} \+ | awk '{ORS=" "; for(i=6;i<=NF;i++) print $i;print "\n"}' | sed -e "s/^ *//g" > /volumeX/home/admin/reunion2
find /volumeX/directory1/directory2/directory3/directory4/directorycible2/* -maxdepth 0 -type d -newermt 2017-09-01 -exec ls -ld {} \+ | awk '{ORS=" "; for(i=6;i<=NF;i++) print $i;print "\n"}' | sed -e "s/^ *//g" >> /volumeX/home/admin/reunion2
find /volumeX/directory1/directory2/directory3/directory4/directorycible3/* -maxdepth 0 -type d -newermt 2017-09-01 -exec ls -ld {} \+ | awk '{ORS=" "; for(i=6;i<=NF;i++) print $i;print "\n"}' | sed -e "s/^ *//g" >> /volumeX/home/admin/reunion2
voici son retour
Sep 26 09:09 volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier 99
Sep 6 09:48 /volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier 101
Sep 11 10:27 /volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier100
ce que je voudrais ensuite, et c’est la ou je bloque, c’est obtenir un fichier sous cette forme
Sep 26 09:09 volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier 99
Sep 6 09:48 /volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier 101
c’est à dire amputé de la ligne complète contenant
/volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier100
puisque c’est le même répertoire que celui présent sur mon premier fichier qui a sorti
Sep 7 14:35 /volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier100/01-Documents/pour test admin-reunion.pdf
ou autre solution lier les deux fichiers générés:
Sep 26 09:09 volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier 99
Sep 6 09:48 /volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier 101
Sep 11 10:27 /volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier100
Sep 7 14:35 /volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier100/01-Documents/pour test admin-reunion.pdf
et supprimer automatiquement les deux lignes contenant /volumeX/directory1/directory2/directory3/directory4/directorycible2/dossier100 (ce que ne fait pas la commande -uniq malheureusement car il en garde toujours une)
j’ai essayé via une recherche inverse
find /volumeX/directory1/directory2/directory3/directory4/directorycible2/* -maxdepth 0 -type f -newermt 2017-09-01 ! -iname "*union*.pdf" -exec ls -ltr {} \+ | awk '{ORS=" "; for(i=6;i<=NF;i++) print $i;print "\n"}' | sed -e "s/^ *//g" > /volumeX/home/admin/reuniontest
Mais la il me sort tous les fichiers non pdf et dossiers de l’arborescence, c’est donc encore plus pénible et impossible à nettoyer.
J’espère avoir été assez clair.
Merci pour votre aide