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 20/01/2018, à 16:45

qolepam

tri et recherche spécifique de noms de fichiers

bonjour,

Je travaille sous Ubuntu 16.04 LTS et une recherche ou tri classique par nom se fait dans le terminal avec locate où on peut utiliser les regex ou find

Soit une petite liste de fichiers dont les noms sont par exemple:
azerty
paupol
Gargantua

Quelles lignes de commande pour:
1) de trier dans cette zone par exemple comme ceci:
-par ordre croissant alphanumérique des dernières lettres des noms de dossiers et fichiers ce qui donnerait:
Gargantua
paupol
azerty
-par ordre croissant alphanumérique de la lettre à la position x[1-n](n dernier):si x=3 cela donnerait:
azerty
Gargantua
paupol
si x=n cela donnerait:
Gargantua
paupol
azerty
On pourrait imaginer d'autres exemples
2)de faire des recherches particulières comme:
-rechercher les noms de fichiers dossiers qui se terminent par un caractère précis
-rechercher les noms de fichiers dossiers dont le caractère à la position x est un caractère précis


merci de votre aide

Hors ligne

#2 Le 20/01/2018, à 17:20

Watael

Re : tri et recherche spécifique de noms de fichiers

Je travaille sous Ubuntu

et ça va ? ça protège bien de la pluie ?

pour le tri : extraire la lettre-critère, passer le couple lettre/mot à sort, et couper le mot pour l'affichage.

pour la recherche : find.


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

Hors ligne

#3 Le 20/01/2018, à 17:23

qolepam

Re : tri et recherche spécifique de noms de fichiers

un site illustrant des exemples de ce genre ?

Hors ligne

#4 Le 20/01/2018, à 17:24

pingouinux

Re : tri et recherche spécifique de noms de fichiers

Bonjour,

$ cat liste
Gargantua
paupol
azerty

-par ordre croissant alphanumérique des dernières lettres des noms de dossiers et fichiers

$ rev liste | sort | rev
Gargantua
paupol
azerty

-par ordre croissant alphanumérique de la lettre à la position x[1-n](n dernier):si x=3

$ sort -k 1.3 liste
azerty
Gargantua
paupol

-rechercher les noms de fichiers dossiers qui se terminent par un caractère précis

Recherche des fichiers ou répertoires dont le nom se termine par X, par exemple

find -name '*X'

-rechercher les noms de fichiers dossiers dont le caractère à la position x est un caractère précis

Recherche des fichiers ou répertoires dont le nom contient un X en 3ème position, par exemple

find -name '??X*'

Hors ligne

#5 Le 20/01/2018, à 17:52

qolepam

Re : tri et recherche spécifique de noms de fichiers

merci bien !
...et pour associer find à sort ?

Dernière modification par qolepam (Le 20/01/2018, à 18:16)

Hors ligne

#6 Le 20/01/2018, à 18:02

Watael

Re : tri et recherche spécifique de noms de fichiers

$ sort -k 1.3 liste

+1


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

Hors ligne

#7 Le 20/01/2018, à 18:37

pingouinux

Re : tri et recherche spécifique de noms de fichiers

...et pour associer find à sort ?

Il suffit d'enchaîner les deux commandes. Par exemple :

find -name ..... | sort -k 1.3

Hors ligne

#8 Le 20/01/2018, à 22:33

qolepam

Re : tri et recherche spécifique de noms de fichiers

enfin une question non répondue:
pour trier selon l'ordre alphanumérique du dernier caractère,sachant que la position par rapport au 1er caractère du dernier caractère est aléatoire à cause des noms de longueur variable ?

Dernière modification par qolepam (Le 20/01/2018, à 23:07)

Hors ligne

#9 Le 21/01/2018, à 06:58

pingouinux

Re : tri et recherche spécifique de noms de fichiers

enfin une question non répondue:
pour trier selon l'ordre alphanumérique du dernier caractère,sachant que la position par rapport au 1er caractère du dernier caractère est aléatoire à cause des noms de longueur variable ?

C'est la première réponse en #4 : les caractères de chaque ligne sont inversés avant de faire le tri, puis inversés de nouveaue pour tout remettre dans le bon sens.

rev liste | sort | rev

Hors ligne

#10 Le 21/01/2018, à 22:19

qolepam

Re : tri et recherche spécifique de noms de fichiers

merci !

autres questions:
1)pour lister tous les noms par ordre inverse alphanumérique du caractère se trouvant avant le dernier caractère spécifique x 
par exemple si ma liste est:
fichier;txt
document.pdf
azerty.jpg
gc.retard.c

avec x=.

la commande recherchée donnerait:
azerty.jpg
document.pdf
fichier.txt
gc.retard.c

2)pour lister tous les noms par ordre inverse alphanumérique du caractère se trouvant en n-ième position avant le dernier caractère spécifique x
exemple!: si x=. et n=2 la commande recherchée donnerait :
azerty.jpg
gc.retard.c
document.pdf
fichier.txt

merci

Hors ligne

#11 Le 21/01/2018, à 23:37

pingouinux

Re : tri et recherche spécifique de noms de fichiers

Question 1 :

rev liste | sort -rt. -k 2.1 | rev

Question 2 :

rev liste | sort -rt. -k 2.2 | rev

Hors ligne

#12 Le 22/01/2018, à 00:06

qolepam

Re : tri et recherche spécifique de noms de fichiers

merci beaucoup !

Dernière modification par qolepam (Le 22/01/2018, à 00:07)

Hors ligne

#13 Le 22/01/2018, à 08:08

DonutMan75

Re : tri et recherche spécifique de noms de fichiers

Salut pingouinux, bonjour à tous,
chapeau pour la maîtrise du sort !

Juste par curiosité (j'ai suivi le fil de loin) :

sort -rt. -k 2.1

-r : cette option indique à sort d'effectuer le tri inverse
-t. : cette option indique à sort quel séparateur utiliser pour délimiter les champs (voir l'option -k ci-dessous)
-k x.y : cette option indique à sort de n'effectuer le tri que sur le caractère y du champ n°x, ainsi -k 2.3 sur "ABC-DEF-GHI" avec un FS sur '-' n'effectuerait le tri que sur "F" ???

C'est bien la bonne interprétation de ta commande ?

Du coup, si j'ai bien compris, pour trier mes fichiers par ordre inverse des extensions (.txt, .exe, .png... on va supposer qu'on a monté une partition windows ^^) :

$ ls | rev | sort -rt. -k 1 | rev

Ou bien si on est sûr que le retour de ls est de la forme "fichier.ext" avec un seul et unique "." au bon endroit :

$ ls | sort -rt. -k 2

Ca me semble correct ?

Bonne journée à tous smile

Donut

Hors ligne

#14 Le 22/01/2018, à 10:28

pingouinux

Re : tri et recherche spécifique de noms de fichiers

DonutMan75 #13 a écrit :
sort -rt. -k 2.1

-r : cette option indique à sort d'effectuer le tri inverse
-t. : cette option indique à sort quel séparateur utiliser pour délimiter les champs (voir l'option -k ci-dessous)
-k x.y : cette option indique à sort de n'effectuer le tri que sur le caractère y du champ n°x, ainsi -k 2.3 sur "ABC-DEF-GHI" avec un FS sur '-' n'effectuerait le tri que sur "F" ???

Oui pour -r et -t.
-k x.y : cette option indique à sort de n'effectuer le tri que sur le d'effectuer le tri à partir du caractère y du champ n°x
Si tu veux te limiter à ce seul caractère, c'est

sort -s -k x.y,x.y ...

Du coup, si j'ai bien compris, pour trier mes fichiers par ordre inverse des extensions (.txt, .exe, .png... on va supposer qu'on a monté une partition windows ^^) :

$ ls | rev | sort -rt. -k 1 | rev

Le tri va bien être effectué sur les extensions, mais écrites à l'envers (ça ne change évidemment rien pour les deux premières) : txt, exe, gnp

Ou bien si on est sûr que le retour de ls est de la forme "fichier.ext" avec un seul et unique "." au bon endroit :

$ ls | sort -rt. -k 2

Ca me semble correct ?

Oui

Hors ligne

#15 Le 22/01/2018, à 23:58

qolepam

Re : tri et recherche spécifique de noms de fichiers

question:
quand le champ séparateur est un espace,que doit-on indiquer après -t ?

merci

Dernière modification par qolepam (Le 22/01/2018, à 23:58)

Hors ligne

#16 Le 23/01/2018, à 07:41

pingouinux

Re : tri et recherche spécifique de noms de fichiers

quand le champ séparateur est un espace,que doit-on indiquer après -t ?

-t\   (-t backslash espace) ou -t" " (ou rien si on veut qu'une succession d'espaces ou de tabulations soit un séparateur)

Dernière modification par pingouinux (Le 23/01/2018, à 07:44)

Hors ligne