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.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.