【发布时间】:2013-02-09 02:12:00
【问题描述】:
我需要在以 nlb 开头的文件夹中获取最新的目录名称。
#!/bin/sh
cd /home/ashot/checkout
dirname=`ls -t nlb* | head -1`
echo $dirname
当文件夹包含许多名称以 nlb 开头的文件夹时,此脚本可以正常工作,但是 当只有一个名称以 nlb 开头的文件夹时,此脚本会打印该文件夹内的最新文件名。如何更改它以获取最新的目录名称?
【问题讨论】:
我需要在以 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 才能不查看目录内部。
这里的另一个提示是将/ 附加到模式。在您指定的问题中获取最新的目录。有了这个尾随的/,只会匹配目录,否则如果存在最新的文件并且匹配模式nlb*,这会破坏您的脚本。
我还将`...` 更改为$(...),这是现代推荐的写作风格。
【讨论】: