2013-02-23 13 views
17

Potrzebuję uzyskać najnowszą nazwę katalogu w folderze, który zaczyna się od nlb.Pobierz najnowszy plik w katalogu

#!/bin/sh 

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

Gdy folder zawiera wiele folderów z nazwą począwszy NLB, ten skrypt działa prawidłowo, ale gdy istnieje tylko jeden folder z nazwa począwszy NLB, skrypt drukuje ostatnią nazwę pliku wewnątrz tego folderu. Jak to zmienić, aby uzyskać najnowszą nazwę katalogu?

Odpowiedz

11

Dodaj argument -d do ls. W ten sposób zawsze wydrukuje tylko to, co zostało powiedziane, a nie zajrzy do katalogów wewnątrz.

6
#!/bin/sh 

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

Jako druga odpowiedź wskazuje to na zewnątrz, trzeba się -d aby nie zajrzeć do katalogów.

Dodatkową wskazówką jest dołączanie do wzoru /. W pytaniu podanym w celu uzyskania najnowszego katalogu. Z tymi końcowymi katalogami zostaną dopasowane tylko te katalogi, w przeciwnym razie plik istnieje, który jest najnowszy i pasuje do wzorca nlb*, który złamałby twój skrypt.

Zmieniłem także `...` na $(...), co jest nowoczesnym, zalecanym stylem pisania.