Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/03/2020, à 13:27

ar barzh paour

[Résolu] tri par date

bonjour à tous
en bash , je récupère une liste de fichiers avec cette commande

find "$rep" -maxdepth $s_r -iname "*.txt" > "$liste_fich"

est-il possible d'obtenir cette liste triée par la date du fichier concerné ? (du plus récent au plus ancien)

Dernière modification par ar barzh paour (Le 05/03/2020, à 19:02)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#2 Le 05/03/2020, à 13:47

pingouinux

Re : [Résolu] tri par date

Bonjour,
Par exemple :

find "$rep" -maxdepth $s_r -iname "*.txt" -exec stat -c "%X %n" {} \; | sort -nr > "$liste_fich"

À adapter en fonction de ce que tu veux en sortie.

Édité : C'est la date de dernier accès qui est prise en compte ci-dessus. Voir le message #7 avec la version corrigée (date de dernière modification).

Dernière modification par pingouinux (Le 05/03/2020, à 18:18)

Hors ligne

#3 Le 05/03/2020, à 13:48

Watael

Re : [Résolu] tri par date

salut,

directement, avec find, non.

find ... -printf '%T@ %p\0' | sort -z -k1,1n | cut -z -d ' ' -f2- | xargs -0 -I _ echo _

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 05/03/2020, à 15:55

ar barzh paour

Re : [Résolu] tri par date

merci à tous les deux pour cette réponse toujours rapide ! moi j'en reviens pas !!!!!
j'ai utilisé

rep="/media/Data/informatique/cmd"
s_r=2
find "$rep" -maxdepth $s_r -iname "*.txt" -exec stat -c "%X %n" {} \; | sort -nr >l1.txt
find "$rep" -maxdepth $s_r -iname "*.txt" -printf '%T@ %p\0' | sort -z -k1,1n | cut -z -d ' ' -f2- | xargs -0 -I _ echo _ >l2.txt

@Watael
ça a l'air de fonctionner en ordre inverse voulu, mais c'est pas grave : je pense que

sort -z k1,1r

devrait me donner le résultat attendu )
(j'ai pas trop compris le -I de  xargs -0 -I _ echo _ )
ici j'ai rajouté en fin la date donnée par nautilus
les dernières lignes

/media/Data/informatique/cmd/	dd.txt		                2020/02/18	
/media/Data/informatique/cmd/	       Sauvegardes.txt		2020/02/21	
/media/Data/informatique/cmd/	       boot.txt		               2020/02/28	
/media/Data/informatique/cmd/	      SATA-sdx-hdx.txt		2020/02/29	
/media/Data/informatique/cmd/	      gps.txt		2020/03/01	
/media/Data/informatique/cmd/	      grub5.txt		2020/03/01	
/media/Data/informatique/cmd/	     usb1.txt		2020/03/02	
/media/Data/informatique/cmd/	    rkfill.txt		2020/03/03	
/media/Data/informatique/cmd/	    journal.txt		2020/03/03	
/media/Data/informatique/cmd/	    admin.txt		2020/03/03	
/media/Data/informatique/cmd/	    grub.txt		2020/03/03	
/media/Data/informatique/cmd/	    grub-réinstallation.txt		2020/03/05	10:23:00

@ pingouinux
il y a des anomalies , des fichiers 2018-2019 avant ceux de 2020
le fichier usb1.txt du 2/3/2020 se trouve en 128ème position donc très loin du début ?
le résultat (quelques lignes de début)
la dernière colonne est la date donnée par nautilus

1583400621	/media/Data/informatique/cmd/	grub-réinstallation.txt	05/05/20	10:23:00
1583399580	/media/Data/informatique/cmd/	xrandr.txt	                        02/11/19	
1583399580	/media/Data/informatique/cmd/	xargs.txt	                18/03/18	
1583399580	/media/Data/informatique/cmd/	wifichecklog.txt	10/12/18	
1583399580	/media/Data/informatique/cmd/	usb.txt	                26/07/19	
1583399580	/media/Data/informatique/cmd/	truc.txt	                16/12/18	
1583399580	/media/Data/informatique/cmd/	trad.txt	                17/12/18	
1583399580	/media/Data/informatique/cmd/	systemd.txt	03/12/18	
1583399580	/media/Data/informatique/cmd/	systemd-1.txt	04/12/18	
1583399580	/media/Data/informatique/cmd/	synaptic-mise_a_jour.txt	26/12/19	
1583399580	/media/Data/informatique/cmd/	swap.txt	           21/11/18	
1583399580	/media/Data/informatique/cmd/	sudo.txt	            21/11/18	
1583399580	/media/Data/informatique/cmd/	ssh.txt	             09/12/18	

Dernière modification par ar barzh paour (Le 05/03/2020, à 16:39)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#5 Le 05/03/2020, à 16:34

ar barzh paour

Re : [Résolu] tri par date

le résultat des premières lignes  avec

find "$rep" -maxdepth $s_r -iname "*.txt" -printf '%T@ %p\0'  | sort -z -k1,1r |sort -r | cut -z -d ' ' -f2- | xargs -0 -I _ echo _>l3.txt
/media/Data/informatique/cmd/grub-réinstallation.txt
/media/Data/informatique/cmd/grub.txt
/media/Data/informatique/cmd/admin.txt
/media/Data/informatique/cmd/journal.txt
/media/Data/informatique/cmd/rkfill.txt
/media/Data/informatique/cmd/usb1.txt
/media/Data/informatique/cmd/grub5.txt

PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#6 Le 05/03/2020, à 16:44

Watael

Re : [Résolu] tri par date

heu, mais pourquoi deux sort ?

un seul sort -t ' ' -z -k1,1nr devrait faire le job...

autrement, le format te convient, ou tu veux séparer le répertoire et le nom des fichiers ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 05/03/2020, à 18:15

pingouinux

Re : [Résolu] tri par date

ar barzh paour #4 a écrit :

il y a des anomalies , des fichiers 2018-2019 avant ceux de 2020

Au temps pour moi, j'ai pris la date de dernier accès au lieu de dernière modification.
Ceci devrait mieux convenir.

find "$rep" -maxdepth $s_r -iname "*.txt" -exec stat -c "%Y %n" {} \; | sort -nr > "$liste_fich"

Hors ligne

#8 Le 05/03/2020, à 18:27

Watael

Re : [Résolu] tri par date

pourquoi appeler stat quand find peut afficher les mêmes informations avec une précision moindre ?
en peut en plus avec find indiquer un caractère de fin de "ligne" NULL.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 05/03/2020, à 18:30

pingouinux

Re : [Résolu] tri par date

Je suis d'accord Watael, mais j'ai corrigé ma proposition initiale.

Hors ligne

#10 Le 05/03/2020, à 18:41

ar barzh paour

Re : [Résolu] tri par date

@watael
sort -r est un oubli de suppression de ma part

find "$rep" -maxdepth $s_r -iname "*.txt" -printf '%T@ %p\0'  | sort -z -k1,1r |sort -r | cut -z -d ' ' -f2- | xargs -0 -I _ echo _>l3.txt

la commande que j'ai utilisée

find "$rep" -maxdepth $s_r -iname "*.txt" -printf '%T@ %p\0'  | sort -z -k1,1r | cut -z -d ' ' -f2- | xargs -0 -I _ echo _>l3.txt

@ pingouinux
ça m'a permis de revoir la commande stat

et ça me parait mieux , le résultat  (les 3 1ères lignes sont d'aujourd'hui)

1583425516 /media/Data/informatique/cmd/date1.txt
1583424864 /media/Data/informatique/cmd/cut.txt
1583419682 /media/Data/informatique/cmd/SATA-sdx-hdx.txt
1583400204 /media/Data/informatique/cmd/grub-réinstallation.txt
1583247630 /media/Data/informatique/cmd/grub.txt
1583220571 /media/Data/informatique/cmd/admin.txt
1583218305 /media/Data/informatique/cmd/journal.txt
1583216980 /media/Data/informatique/cmd/rkfill.txt
1583150178 /media/Data/informatique/cmd/usb1.txt
1583054915 /media/Data/informatique/cmd/grub5.txt

Dernière modification par ar barzh paour (Le 05/03/2020, à 18:41)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#11 Le 05/03/2020, à 18:41

Watael

Re : [Résolu] tri par date

revoir la ligne de commande intégralement réveille le traumatisme. lol


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#12 Le 05/03/2020, à 18:44

ar barzh paour

Re : [Résolu] tri par date

@watael
le format me va bien , je réutilise chaque nom complet par la suite

un commentaire/explication  sur -I  _  echo  _

xargs -0 -I _ echo _

?

       -I chaîne-remplacement
              Remplacer  les  occurrences  de chaîne-remplacement dans les pa‐
              ramètres initiaux par les noms lus sur l'entrée  standard.  Dans
              ce  cas,  les  blancs  non protégés ne sont pas considérés comme
              terminant les items en entrée. Implique -x et -L 1.

je pense avoir compris !
-I _   : _ est remplacé par le nom d'un fichier
et donc on fait un echo sur ce nom

Dernière modification par ar barzh paour (Le 05/03/2020, à 19:00)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#13 Le 05/03/2020, à 19:02

Watael

Re : [Résolu] tri par date

oui, c'est ça.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#14 Le 05/03/2020, à 20:09

kamaris

Re : [Résolu] tri par date

Watael a écrit :

pourquoi appeler stat quand find peut afficher les mêmes informations avec une précision moindre ?
en peut en plus avec find indiquer un caractère de fin de "ligne" NULL.

Juste pour préciser, stat aussi permet d'ajouter un caractère nul de fin de ligne (en reprenant l'exemple en #7) :

stat --printf="%Y %n\0"

Hors ligne

#15 Le 05/03/2020, à 21:28

ar barzh paour

Re : [Résolu] tri par date

hé bien ça deux deux solutions
merci à tous
à propos de

cut -z -d ' ' -f2-

j'ai constaté qu'il manquait dans le man de ma version la description de l'option -z

Dernière modification par ar barzh paour (Le 05/03/2020, à 21:29)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#16 Le 05/03/2020, à 21:55

kamaris

Re : [Résolu] tri par date

Tu utilises ubuntu 14.04 ?
Parce qu'effectivement, ça ne figure pas dans le manuel de cut sur 14.04 : https://manpages.ubuntu.com/manpages/tr … cut.1.html
Même si manifestement, l'option existe.
Comme pour tous les filtres en général, elle spécifie que le délimiteur de fin de ligne est le caractère nul :

man cut a écrit :

       -z, --zero-terminated
              line delimiter is NUL, not newline

Hors ligne