【问题标题】:ls -f command debianls -f 命令 debian
【发布时间】:2019-08-22 06:50:29
【问题描述】:

我在 Debian 版本 9(Stretch) 中创建了 5 个文件,如下所示: 触摸一个 触摸 b 触摸 c 触摸d 触摸e

当我这样做的时候 "ls -f" 然后输出是 "d a b c e ..."

注意:debian中的输出顺序是锯齿形的,不升不降。

我在 RHEL7 中做了类似的测试,输出如下: "ls -f" 然后输出是 "... a b c d e"

当在 debian 上执行“ls -f”时,您能否建议我如何在 debian 中将输出设为“... a b c d e”。

提前致谢。

【问题讨论】:

  • 不应该只是ls(没有任何选项)给你想要的顺序吗?

标签: debian debian-based debian-stretch


【解决方案1】:

就我而言,ls -f 写道:

b   c   a   d   e

ls -f 不对找到的内容进行排序。如果有人想对列表进行排序,他可以使用ls,或ls -f | sort,或者更适合具体问题的任何方法。

【讨论】:

  • 感谢您的回复,使用 sort 并不能帮助解决问题。至少我想知道“d a b c e ..”的顺序是在什么基础上得出的,这样我就可以在我的代码中相应地编写逻辑。
  • 事实上为什么在 debian 和 rhel 之间为相同的命令“ls -f”给出不同的输出
  • “你能建议我如何将输出设置为“。 .. 在 debian 中执行“ls -f”时出现 a b c d e” 问题已得到解答。另一个主题是,当您将文件保存在设备中时,不能保证其在该设备中的特定位置,因此您的程序(如ls -f)可以在找到另一个文件之前找到一个文件。对ls -f 的输出进行排序,或使用ls 将以预期的方式显示文件。
  • 嗨! StackOverflow 中的标准程序是投票(或点击答案中的✓ 接受答案),如果您有另一个问题(您可以在其中放置指向当前问题的链接),则创建另一个问题。
【解决方案2】:

ls -f按磁盘顺序给你文件,所以未排序。

如果你想拥有a b c d els -f,你需要知道你使用哪个文件系统,并检查文件系统如何在目录中存储文件名。没有通用规则。

一个不太高级的文件系统,您创建文件的顺序是您使用ls -f 获得的顺序。内核缓存可能会在下次调用时更改顺序。

所以:订单是一个内部 API,我们不应该知道它,并且假设我们对订单没有任何假设。内核和文件系统可以随时更改顺序,可能在内部优化运行期间。

ls -f 之所以存在,是因为它不存储文件名,也不对它们进行排序,因此它速度更快且占用资源更少(在非常大的目录上)。

【讨论】:

    猜你喜欢
    • 2016-11-19
    • 2013-05-22
    • 2010-09-07
    • 1970-01-01
    • 2017-08-09
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多