列出具有数字名称的文件夹,这些文件夹根据其数字名称值以降序排列

时间:2019-09-25 16:38:46

标签: bash

任务:
找到具有数字名称的文件夹
根据其数字名称值数字降序列出它们。

示例:
在文件夹test/中有以下文件夹:1 2 3 10

代码:

ls -al test/ | grep '^d' | awk '{print $9}'

输出:(另一个问题是:它包含点)

.
..
1
10
2
3

所需的输出:(基于数字名称值的降序)

10
3
2
1

2 个答案:

答案 0 :(得分:0)

这应该给您您所需要的:

ls -d */ |  cut -d '/' -f 1 | sort -nr

输出:

10
3
2
1
  • -d列出目录本身,而不是目录内容。
    这将列出当前目录.,因此*/列出当前目录中的所有文件。

  • cut剪切给定的字符串。
    -d使用定界符'/',因为输出类似于1/
    -f 1返回的第一个字段是1

  • sort -nr表示按相反的顺序按数值排序。

或者您可以按照自己的方式进行:

ls -al | grep '^d' | awk 'NR>2 {print $9}' | sort -nr

最后将NR>2添加到a​​wk和sort -nr中。输出将与上面的命令相同。

答案 1 :(得分:0)

如果启用bash extglob(shopt -s extglob),则只能使用ls:

ls -1rvd +([[:digit:]])/

这可以满足这两个要求,查找仅包含数字的目录并以相反的数字顺序列出它们(实际上是版本顺序,但在这种情况下是相同的)