![在 Debian 上,哪个命令将返回目录中文件名“最小”的文件?](https://linux22.com/image/650201/%E5%9C%A8%20Debian%20%E4%B8%8A%EF%BC%8C%E5%93%AA%E4%B8%AA%E5%91%BD%E4%BB%A4%E5%B0%86%E8%BF%94%E5%9B%9E%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%96%87%E4%BB%B6%E5%90%8D%E2%80%9C%E6%9C%80%E5%B0%8F%E2%80%9D%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一个包含三个文件的目录,例如5.war
,6.war
和7.war
。
哪个命令将返回此目录中文件名“最小”的文件?(在本例中为5.war
。)
答案1
ls
默认按名称排序。如果没有目录需要处理,则只需执行以下操作:
ls | head -1
为了添加一些完成度,如果您必须担心目录,请执行以下操作:
ls -p | egrep -v /$ | head -1
答案2
不幸的是,ls
按字母顺序对文件名进行排序,这对于数字来说是不正确的。例如,10.war
将前 2.war
,这不是你所希望的。
也许你可以通过谷歌找到一些更智能的排序工具,但如果没有的话,我建议:
- 如果您的文件是按字母顺序排列的,@Hyppy 的解决方案非常适合您。
- 如果它们是数字,而不是
head -1
,我建议按数字排序:ls|sort -n|head -1
- 如果两者兼有,你就必须寻找一些替代方案(我用谷歌搜索了更智能的排序工具来代替你)。