按子文件夹编号对目录列表进行排序
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), "
";
}'
以上是关于按子文件夹编号对目录列表进行排序的主要内容,如果未能解决你的问题,请参考以下文章