Résolu le 30-12-18 Commande "touch" ... ou équivalent sur une arborescence

Questions concernant les lignes de commandes
Avatar du membre
tioker
Messages : 980
Enregistré le : sam. 6 mai 2017 00:33
Localisation : Anjou...Feu !
Contact :

Re: Commande "touch" ... ou équivalent sur une arborescence

Message par tioker »

Dernier message de la page précédente :

Pour la beauté ... de l'écriture (ou de la plume).
1- effectivement la commande "date" a l'air d'avoir un comportement pas toujours fiable
2- la commande touch avec son option -t nécessite les heures et minutes (dixit touch --help). Mais bon, on peut compléter effectivement.
3- regEx ... allez, je me lance, ou plutôt je plonge. Une bonne musique sur les oreilles, une paire de lunettes bien nettoyées, on va trouver.

A plus
HP Victus 16: Mint 21.3 Cinnamon 6,0,4 + Windows 11 - Ryzen 5 5600H - NVIDIA GeForce GTX 1650 - Mem 16Go - SSD 512Go
pCloud Synchronisation en temps réel des 4 dossiers personnels

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Commande "touch" ... ou équivalent sur une arborescence

Message par arghlub »

tioker a écrit : 2- la commande touch avec son option -t nécessite les heures et minutes (dixit touch --help). Mais bon, on peut compléter effectivement.
Ben ouais, à compléter en auto avec 0000 par exemple, histoire de pas se prendre la tête avec les 24 heures... (vu que tu renommes des répertoires entiers, c'est pas à la minute près il me semble)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

Avatar du membre
tioker
Messages : 980
Enregistré le : sam. 6 mai 2017 00:33
Localisation : Anjou...Feu !
Contact :

Re: Commande "touch" ... ou équivalent sur une arborescence

Message par tioker »

J'ai lu ton code

Code : Tout sélectionner

dateRegEx="^[0-9]{4}(0[0-9]|1[0-2])([0-2][09]|3[0-1])[0-2][0-9][0-5][0-9]"
et en croisant avec la documentation (http://www.linux-france.org/article/web ... regexp.php) j'ai compris.
Comme tu le dis ça ne contrôle pas du tout la date, seulement sa forme. Avec ce contrôle on peut mettre 31 jours à tous les mois, ou "00" dans les mois et les jours. J'ai préféré une formulation plus longue mais plus juste (je ne traite pas les heures, mais c'est le même principe)

Code : Tout sélectionner

^[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])$
Pour la fonction date, je n'ai pas réussi à la mettre en erreur quand je la traite en deux temps: date puis heure.
Donc, pour le fun, je vais mettre la version regEx en commentaire dans la procédure pour la garder à mes bons souvenirs.
Quand à la boucle if ou while ... là je sature; je m'y remettrais plus tard.
Merci à toi/vous et ne m'oubliez pas pour la documentation ... récente.

Anecdote: ce matin j'ai buté sur un simple echo et read. Le message était "identifiant non valable". :evil: Je me suis arraché [le peu] des cheveux [qu'il me reste] pour comprendre :idea: que, sous Linux [Mint], mieux vaut utiliser un éditeur comme vi ou nano car le notepad de l'interface graphique doit mettre des caractères invisibles foireux. Une fois tout ressaisi sous Terminal, j'ai retrouvé mes esprits :mrgreen: . Ca m'a rappelé le même problème d'il y a ... plus de 15 ans sous Unix; caractère foireux qu'on ne voit pas.
HP Victus 16: Mint 21.3 Cinnamon 6,0,4 + Windows 11 - Ryzen 5 5600H - NVIDIA GeForce GTX 1650 - Mem 16Go - SSD 512Go
pCloud Synchronisation en temps réel des 4 dossiers personnels

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Commande "touch" ... ou équivalent sur une arborescence

Message par arghlub »

excuse ma regEx était tapée au kilomètre... je l'avais pas vérifié et savais qu'elle comporterait certainement des erreurs (les voies de la regEx sont impénétrables! :D ).
Il me semble qu'il y aurait moyen de tout contrôler en faisant appel à des variables de calendrier mais là ça devient infernal et moins Kisss.
******
Par rapport aux éditeurs de texte en CLI, perso je suis emacs pas vi (sujet à polémique ne rentrons pas dedans, chacun ses gouts). Ceci dit y'a d'excellent editeur en GUI (interface graphique) qui ne touche pas au bordel (je pense à Atom, BlueFish, Brackets).... Depuis quelques mois je suis avec Atom (editeur de texte lancé par GitHub, très intéressant...)

Ceci dit, je pense que le sujet est clos (il me semble que l'exercice était intéressant) si tu veux bien partager ton code en open-source pour ceux que cela pourrait intéresser...
;)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

Avatar du membre
tioker
Messages : 980
Enregistré le : sam. 6 mai 2017 00:33
Localisation : Anjou...Feu !
Contact :

Re: Commande "touch" ... ou équivalent sur une arborescence

Message par tioker »

arghlub a écrit :si tu veux bien partager ton code en open-source pour ceux que cela pourrait intéresser...
;)
Mon code définitif [?] avec P1 et P2 optionnels, HHMM aussi.
J'ai fait du KISS.
Quand tu dis partage en openSource (camelCase), c'est la même chose que j'ai fait précédemment (zerobin) ?
Sinon code.

Code : Tout sélectionner

#!/bin/bash
#
#-------------------------Change the date of folder (and sub-folder) and associated files
#-------------------------$1 = ftbm = folder to be modified
#-------------------------$2 = dta = date (YYYYMMDD[HHMM]) to apply
#
#------------------------- Constantes 
#
libOk="valide"; libKo="**non valide**"; libEmpty="vide"; lib0="repertoire"; lib1="heure "; lib2="date "
#
#--------------------------Test de la variable $1 et $2
#
ftbm="$1"
while ( test -z "$ftbm" ); do read -p "$lib0 $libOk :" ftbm; done
dta="$2"
while ( test -z "$dta" ); do read -p "$lib2 $libOk :" dta; done
#
#--------------------------Does the folder exists ?
#
test -d "$ftbm" -a ! -L "$ftbm"
if (( "$?" > 0 )); then echo "$lib0 $ftbm $libKo"; exit; fi
#
#------------------------- Date control (in 2 times, bug in "date" fonction ?)
#------------------------- If HHMM is omitted, initialized to 0000
#
d1=$(echo "$dta" | cut -c 1-8)
date -d "$d1" +"%Y%m%d"
if (( "$?" > 0 )); then echo "$lib2 $d1 $libKo"; exit; fi
t1=$(echo "$dta" | cut -c 9-12)
if ( test -z "$t1" ); then t1="0000"; fi
date -d "$t1" +"%H%M"
if (( "$?" > 0 )); then echo "$lib1 $t1 $libKo"; exit; fi
dta="$d1$t1"
#
#------------------------- Lanch the command !
#
find "$ftbm" -exec touch -t "$dta" {} \;
ls "$ftbm" -lR
letMeKnow, goodNight, sleepWell ...
En cadeau, ce que j'écoute en découvrant le shell ==> https://youtu.be/-GZTyVraYJo
Modifié en dernier par tioker le mar. 18 juil. 2017 09:02, modifié 2 fois.
HP Victus 16: Mint 21.3 Cinnamon 6,0,4 + Windows 11 - Ryzen 5 5600H - NVIDIA GeForce GTX 1650 - Mem 16Go - SSD 512Go
pCloud Synchronisation en temps réel des 4 dossiers personnels

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Commande "touch" ... ou équivalent sur une arborescence

Message par arghlub »

Merci pour le partage de ton code (et avec commentaires internationalisés en franglais, thank you monsieur! ;) je taquine... par rapport au 2ème comment “Variables test”)
tioker a écrit :En cadeau, ce que j'écoute en découvrant le shell ==> https://youtu.be/-GZTyVraYJo
Youn Sun Nah... Très bon ... un peu épileptique mais très bon...
À faire découvrir aux autres dans le sujet La boîte musicale
;)
;)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Commande "touch" ... ou équivalent sur une arborescence

Message par arghlub »

Par contre, petit détail, je pense qu'il devrait y avoir un petit problème au niveau de la variable “libOk”....
Lors de la déclaration, tu le fais en camelCase “libOk” mais quand tu l'appelles, tu changes la casse du K : “$libOK” donc d'après moi ça devrait bugué.
;)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

Avatar du membre
tioker
Messages : 980
Enregistré le : sam. 6 mai 2017 00:33
Localisation : Anjou...Feu !
Contact :

Re: Commande "touch" ... ou équivalent sur une arborescence

Message par tioker »

De l'utilité de rédiger un scénario de test et un cahier de recette.
J'ai perdu mes réflexes (j'ai travaillé en infogérance des années).
J'ai corrigé; merci.
HP Victus 16: Mint 21.3 Cinnamon 6,0,4 + Windows 11 - Ryzen 5 5600H - NVIDIA GeForce GTX 1650 - Mem 16Go - SSD 512Go
pCloud Synchronisation en temps réel des 4 dossiers personnels

Répondre