ZW3B :-: API Client * Contents * Docs by LAB3W.ORJ

Translate this page

Name : BETA-TESTERS

Project name : ZW3B-API-BETA-TESTERS

Authorized. - 200 - Client API Name and Origin Wildcard OK

¿Comment? 'Ou' ¿Que faire?, OS GNU/Linux, SHells, Couper, fractionner une date YYYYMMDD

Couper, fractionner une date YYYYMMDD ou un fichier ayant une date par exemple 97-20190802112342.jpg

Author : O.Romain.Jaillet-ramey

Comment-faire pour fractionner : avec un substr dans la commande awk

Par exemple sur la commande date +%Y%m%d%H%M%S :

Script avec 1 ligne

001date +%Y%m%d%H%M%S | awk -F - '{print "Y"substr(,1,4) "M"substr(,5,2) "D"substr(,7,2) "H"substr(,9,6) "" substr(,15,4)}';
Retirer les numéros de lignes

Par exemple sur un répertoire avec des fichiers ayant étaient nommés par date :

Script avec 3 lignes

001ls -l /home/user/repertoire/
002/home/user/repertoire/97-20190802112342.jpg
003/home/user/repertoire/01-20190810150200.jpg
Retirer les numéros de lignes

On pourait faire :

Script avec 1 ligne

001for i in  /home/user/repertoire/*; do echo $i |cut -d/ -f 5 | awk -F - '{print  "-" "Y"substr(,1,4) "M"substr(,5,2) "D"substr(,7,2) "H"substr(,9,6) "" substr(,15,4)}'; done;
Retirer les numéros de lignes


Comment-faire pour récupérer seulement les fichiers de la journée !

Il faut simplement ajouter des variables comme la date du jour dans la commande awk, récupérer la date du jour des fichiers et vérifier si elles sont égales ou différentes avec un if.

Comme ceci pour les fichiers de type 01-20190810150200.jpg du répertoire /home/user/repertoire/ :

Script avec 7 lignes

001for i in  /home/user/repertoire/*.jpg; do
002
003        echo $i |cut -d/ -f 5 | 
004        awk -F - '{ date_now=substr($(date),7,2); day=substr(,7,2); if (date_now == day) 
005        print  "-" "Y"substr(,1,4) "M"substr(,5,2) "D"substr(,7,2) "H"substr(,9,4) "S"substr(,13,2) ""substr(,15,4)}';
006
007done;
Retirer les numéros de lignes

Et comme ceci sur une date de type YYYYMMDD heure minutes secondes : date +%Y%m%d%H%M%S ^^ :

Script avec 1 ligne

001date +%Y%m%d%H%M%S | awk -F - '{ date_now=substr($(date),7,2); day=substr({content_text},7,2); if (date_now == day) print "Y"substr({content_text},1,4) "M"substr({content_text},5,2) "D"substr({content_text},7,2) "H"substr({content_text},9,4) ""substr({content_text},13,2) ""substr({content_text},15,4) }';
Retirer les numéros de lignes



Cordialement, Romain ;)



<< Renommer plusieurs fichiers : commands rename for cut sed awk paste

directory YYYY/MM/DD">Move files date YYYYMMDD --> directory YYYY/MM/DD >>