Bonjour tout le monde,
Je cherche à faire un script qui récupère tout les dossiers d'un répertoire, puis qui ne garde que les dossiers appelés XXXX (X est un chiffre), les trie par ordre croissant, puis récupère le nom du dernier dossier.
Voici ce que j'ai fait :
Je commence avec un ls -l. Je récupère le type et le nom de chaque élément (1er sed => "d répertoiren" ou "- fichiern"), je supprime toutes les lignes correspondant à un fichier (seconde partie du sed) ainsi que la première ligne du ls (celle qui donne le total d'éléments, 3ieme partie du sed). Ensuite, je supprime le "d " avant le nom de fichier (tr puis cut), et je supprime toutes les lignes qui ne commencent pas par 4 chiffres (dernier sed).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 dernierdossier(){ # le script prend en paramètre un répertoire ($1) dernierdossier=$(ls -l $1 | sed -e '1,$ s/\(.\).* \([^ ]*\)$/\1 \2/' -e '/^-/d' -e '1d' | tr -s ' ' ';' | cut -d ';' -f 2 | sed -e '/^[0-9]\{4\}/!d' | sort -n | tail -n 1) echo $dernierdossier # ... }
Je trie ensuite par ordre lexicographique puis je récupère le dernier élément de la liste (sort et tail).
Et je le teste avec ceci :
Et il me renvoie 9999dossier-inutile. Or je dois récupérer 1001.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 mkdir "Test" mkdir "Test/1000" "Test/1001" mkdir "Test/dossier-inutile" "Test/9999dossier-inutile" "Test/dossier-inutile9999" test=$(dernierdossier ./Stockage/) echo $test
Je n'arrive pas à conserver uniquement les dossiers dont le nom est 4 chiffres. Mon script ne récupère que les dossiers qui commencent par 4 chiffres. J'essaie de tâtonner du coté de awk mais je suis encore très faible en scripts shell.
Je vous passe les considérations sur l'inélégance totale de ce script ^^
Pour l'histoire, si je trouve la solution, je dois l'adapter à des noms de dossiers à 2 chiffres et des noms de fichiers à 2 chiffres d'une extension donnée (XX.fic)
En vous remerciant du temps que vous m'accorderez !
Partager