ti-enxame.com

Obter o arquivo mais recente no diretório

Preciso obter o nome do diretório mais recente em uma pasta que comece com nlb.

#!/bin/sh

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

Quando a pasta contém muitas pastas com o nome iniciando nlb, esse script funciona bem, mas quando existe apenas uma pasta com o nome iniciando nlb, esse script imprime o nome do arquivo mais recente dentro dessa pasta. Como alterá-lo para obter o nome do diretório mais recente?

19
Ashot

Adicione o -d argumento para sl. Dessa forma, ele sempre imprimirá exatamente o que foi dito, e não procurará nos diretórios.

12
John Zwinck
#!/bin/sh

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

Como a outra resposta aponta, você precisa do -d Para não procurar nos diretórios.

Uma dica adicional aqui é anexar um / Ao padrão. Na pergunta que você especificou para obter o mais recente diretório. Com esse / À direita, apenas os diretórios serão correspondidos; caso contrário, se existir um arquivo que seja o mais recente e corresponda ao padrão nlb* Que interromperia seu script.

Também alterei o `...` Para $(...), que é o estilo de escrita recomendado moderno.

8
janos