19

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

#!/bin/sh

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

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

4

2 回答 2

13

-d参数添加到 ls。这样,它总是会打印它所告诉的内容,而不是查看目录内部。

于 2013-02-23T14:17:40.900 回答
8
#!/bin/sh

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

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

此处的另一个提示是将 a 添加/到模式中。在您指定的问题中获取最新目录。有了这个尾随/的目录将被匹配,否则如果存在一个最新的文件并且匹配nlb*会破坏你的脚本的模式。

我还把现代推荐的写作风格改成了`...`现代$(...)推荐的写作风格。

于 2013-02-23T14:29:08.170 回答