2013-02-23 6 views
17

Je dois obtenir le dernier nom de répertoire dans un dossier qui commence par nlb.Obtenez le dernier fichier dans le répertoire

#!/bin/sh 

cd /home/ashot/checkout 
dirname=`ls -t nlb* | head -1` 
echo $dirname 

Lorsque le dossier contient de nombreux dossiers dont le nom commence NLB, ce script fonctionne très bien, mais quand il n'y a qu'un seul dossier dont le nom commence NLB, ce script imprime le dernier nom de fichier dans ce dossier. Comment changer pour obtenir le dernier nom de répertoire?

Répondre

11

Ajoutez l'argument -d à ls. De cette façon, il imprimera toujours ce qu'il est dit, pas regarder dans les répertoires.

6
#!/bin/sh 

cd /home/ashot/checkout 
dirname=$(ls -dt nlb*/ | head -1) 
echo $dirname 

Comme autre réponse souligne dehors, vous avez besoin -d de ne pas regarder à l'intérieur des répertoires.

Une astuce supplémentaire est d'ajouter un / au motif. Dans la question que vous avez spécifié pour obtenir le dernier répertoire. Avec cette fin / seuls les répertoires seront appariés, sinon si un fichier existe le plus récent et correspond au modèle nlb* qui casserait votre script.

J'ai également changé le `...` en $(...) qui est le style d'écriture recommandé moderne.

Questions connexes