【问题标题】:Sort subdirectories in a directory in a for loop在for循环中对目录中的子目录进行排序
【发布时间】:2017-04-26 18:30:48
【问题描述】:

假设你有

for subdir in *

并且您希望以人类数字顺序读取父目录中的子目录(名为 1、2、...、10、11...),即 1、2、3 等,而不是在机器一中,即 1、10 等。你如何执行它?

【问题讨论】:

  • 请参阅BashFAQ/003 了解执行此操作的可靠方法。

标签: bash scripting command


【解决方案1】:

您可以使用-n (--numeric-sort) 选项对sort 进行数字顺序排序:

~/tmp for f in $(ls | sort -n); do echo $f; done
1
2
3
4
5
6
7
8
9
10

~/tmp for f in $(ls); do echo $f; done
1
10
2
3
4
5
6
7
8
9

如果你不需要做任何操作,你只需要按顺序列出目录:

ls | sort -n 

【讨论】:

  • 我也想过sort -n,确实我用ls测试过,得到了预期的结果,但是我不知道如何在for'参数中使用它。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 2021-09-22
  • 2019-12-13
  • 1970-01-01
  • 2016-03-24
  • 1970-01-01
  • 2019-01-22
相关资源
最近更新 更多