[Bash] Tri de fichiers et exp rationnelles

Résolu/Fermé
Utilisateur anonyme - 24 août 2005 à 14:46
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 25 août 2005 à 02:51
Bonjour à tous.

Je suis en train d'écrire un script en Bash qui traite des fichiers.
2 problèmes se posent à moi:

>> premièrement, parmi les fichiers se trouvant dans un répertoire, je dois extraire le nom du dernier fichier dans l'ordre alphabétique croissant. Je crois qu'il faut se servir de ls, mais je n'y suis pas arrivé. Enfin, je suis tombé sur la commande
ls | cut -f 1 | tail -1
mais c'est un peu du bricolage et je ne la comprends pas trop. Si vous aviez une solution plus élégante...

>> deuxièmement, il est question d'expressions rationnelles. Les fichiers à traiter ont un nom de ce type :

[chaîne de caractères][3 chiffres].extension

exemple : linux012.org
blablabla123.rpm

La chaîne de caractères comporte un nombre n de caractères, et uniquement des lettres.
Je voudrais enlever la chaîne de caractères et l'extension du nom des fichiers, pour extraire uniquement les chiffres. En clair, avec linux012.org, j'obtiendrai 012.
Je sais comment faire pour retirer l'extension. C'est la chaîne de caractères qui me pose problème. Je crois qu'il faut faire un truc du genre
$(nom_fichier#*[a-z]}
mais ça n'enlève que la première lettre.

>> bonus: comment fait-on pour extraire plusieurs motifs en une seule ligne?
Exemple, j'ai un fichier nprénom.doc. Comment faire pour obtenir prénom sans faire

fichier=nprénom.doc
a=${fichier%.*}


puis

prénom=${a#[a-z]}

mais en une seule ligne?

Merci bien pour vos réponses.
A voir également:

1 réponse

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
25 août 2005 à 02:51
Je pense que tu veux parler d'expressions regulieres. Tu as les bases dans :
man perlre

Mais je te suggère aussi de regarder quelques tuoriels pour te familiariser avec les regexp.

En fait je pense que ce que tu fais tu devrais le faire dans un langage un peu mieux que bash (genre plus simple, plus portable), comme par exemple python. En plus python c'est facile.
http://www.amk.ca/python/howto/regex/

PS : jamais d'accent sur les noms de variable (genre prénom) et autres caractères bizarres. Utilise juste des caractères alphanumeriques ou _.
0