我需要在以 nlb 开头的文件夹中获取最新的目录名称。
#!/bin/sh
cd /home/ashot/checkout
dirname=`ls -t nlb* | head -1`
echo $dirname
当文件夹包含许多名称以 nlb 开头的文件夹时,此脚本可以正常工作,但当只有一个名称以 nlb 开头的文件夹时,此脚本会打印该文件夹内的最新文件名。如何更改它以获取最新的目录名称?
将-d
参数添加到 ls。这样,它总是会打印它所告诉的内容,而不是查看目录内部。
#!/bin/sh
cd /home/ashot/checkout
dirname=$(ls -dt nlb*/ | head -1)
echo $dirname
正如另一个答案指出的那样,您需要-d
不查看目录内部。
此处的另一个提示是将 a 添加/
到模式中。在您指定的问题中获取最新目录。有了这个尾随/
的目录将被匹配,否则如果存在一个最新的文件并且匹配nlb*
会破坏你的脚本的模式。
我还把现代推荐的写作风格改成了`...`
现代$(...)
推荐的写作风格。