在bash中是否有一种快速,智能的方法(也许使用awk / sed / sort ???)来按路径中子文件夹的数量然后按字母顺序对 find 命令的结果进行排序。
我的意思是
./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命令的输出,首先查看当前文件夹中的文件名,然后查看第一级子文件夹中的文件,然后查看第二级中的文件,依此类推(如果可能的话,按顺序对每个级别)。
答案 0 :(得分:3)
您可以在persisted
中使用printf
语句,并要求它返回文件find
的深度。然后在其上使用%d
并剪切以除去输出:
sort
答案 1 :(得分:0)
我想这比@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("\n", @sorted), "\n";
}'