获取目录中的最新文件

Ash*_*hot 18 unix bash shell

我需要在以nlb开头的文件夹中获取最新的目录名称.

#!/bin/sh

cd /home/ashot/checkout
dirname=`ls -t nlb* | head -1`
echo $dirname
Run Code Online (Sandbox Code Playgroud)

当文件夹包含许多名称以nlb开头的文件夹时,此脚本可以正常工作,但是当只有一个名称以nlb开头的文件夹时,此脚本会在该文件夹中打印最新的文件名.如何更改它以获取最新的目录名称?

Joh*_*nck 12

-d参数添加到ls.这样它将始终打印出它所说的内容,而不是查看目录内部.


Sto*_*ica 8

#!/bin/sh

cd /home/ashot/checkout
dirname=$(ls -dt nlb*/ | head -1)
echo $dirname
Run Code Online (Sandbox Code Playgroud)

正如另一个答案所指出的那样,你需要-d不要查看内部目录.

这里的另一个提示是附加/到模式.在您指定的问题中获取最新目录.使用此跟踪/仅匹配目录,否则如果存在最新的文件并匹配nlb*将破坏脚本的模式.

我也改变了`...`$(...)这是现代推荐的写作风格.