2013-02-23 24 views
17

Ho bisogno di ottenere l'ultimo nome di directory in una cartella che inizia con nlb.Ottieni l'ultimo file nella directory

#!/bin/sh 

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

quando la cartella contiene molte cartelle con il nome di iniziare NLB, questo script funziona bene, ma quando c'è solo una cartella con il nome che inizia NLB, questo script stampa il nome del file più recente all'interno di quella cartella. Come cambiarlo per ottenere l'ultimo nome della directory?

risposta

11

Aggiungere l'argomento -d a ls. In questo modo stamperà sempre solo ciò che viene detto, non guardare all'interno delle directory.

6
#!/bin/sh 

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

Come rileva l'altra risposta fuori, è necessario il -d di non guardare directory dentro.

Un ulteriore suggerimento qui è l'aggiunta di uno / al modello. Nella domanda specificata per ottenere l'ultima directory . Con questo trailing / corrisponderanno solo le directory, altrimenti se esiste un file che è l'ultimo e corrisponde al modello nlb* che potrebbe interrompere lo script.

Ho anche modificato lo `...` in $(...) che è lo stile di scrittura consigliato moderno.

Problemi correlati