任务:
找到具有数字名称的文件夹。
根据其数字名称值以数字降序列出它们。
示例:
在文件夹test/
中有以下文件夹:1
2
3
10
代码:
ls -al test/ | grep '^d' | awk '{print $9}'
输出:(另一个问题是:它包含点)
.
..
1
10
2
3
所需的输出:(基于数字名称值的降序)
10
3
2
1
答案 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
添加到awk和sort -nr
中。输出将与上面的命令相同。
答案 1 :(得分:0)
如果启用bash extglob(shopt -s extglob
),则只能使用ls:
ls -1rvd +([[:digit:]])/
这可以满足这两个要求,查找仅包含数字的目录并以相反的数字顺序列出它们(实际上是版本顺序,但在这种情况下是相同的)