按子文件夹编号对目录列表进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按子文件夹编号对目录列表进行排序相关的知识,希望对你有一定的参考价值。

bash中是否有一种快速而智能的方式(可能使用awk / sed / sort ???)按路径中的子文件夹数量排序查找命令的结果,然后按字母顺序排序。

我的意思是

./a/
./b/
./c/
./a/a/
./a/python-script.py
./a/test.txt
./b/a/
./b/b/
./c/a/
./c/c/
./a/a/a/
./a/a/file.txt
./a/a/t/
...
...

我想获取find命令的输出,首先查看当前文件夹中的文件名,然后查看第一级子文件夹中的文件,然后查看第二级文件中的文件,依此类推(如果可能的话,对每个级别进行alfabetically排序) 。

答案

您可以在printf中使用find语句并要求它返回文件%d的深度。然后在其上使用sort并剪切以删除输出:

$ find . -printf '%d	%p
' | sort -n | cut -f2-
另一答案

我想这比@ kvantour的答案要优雅得多,Schwartzian transform中的Perl怎么样:

find . -print0 | perl -0ne '
    push(@list, $_);
    END {
        @sorted = map { $_->[0] }
        sort { $a->[1] <=> $b->[1] or $a->[0] cmp $b->[0] }
        map { [$_, tr#/#/#] } @list;
        print join("
", @sorted), "
";
    }'

以上是关于按子文件夹编号对目录列表进行排序的主要内容,如果未能解决你的问题,请参考以下文章

PHP Laravel 按子顺序排序

PHP:按子数组的出现次数对多维数组进行排序

按子数组的大小对多维数组进行排序

在javascript中按子数组属性值对对象数组进行排序

linq 按子字符串对数组中的字符串进行排序

使用带有实体框架的动态字段按子记录排序